2017-08-29 105 views
0
$query = "SELECT tag.name, tag.id 
     FROM #__k2_tags as tag 
     LEFT JOIN #__k2_tags_xref AS xref ON xref.tagID = tag.id 
     WHERE xref.itemID IN (".implode(',', $IDs).") 
     AND tag.published = 1"; 
在xref.tagID

是標籤ID如:標籤識別:42是100倍,標籤識別:15爲90倍,標籤識別:56的10倍,我想先展示,然後42 15然後56(我想cound多少標籤是xref.tagID並序)從查詢中獲取X最熱門的標籤

+0

我真的希望你的緣故'$ ID'正確逃脫。 – tadman

+0

我不認爲這可以用SQL來完成。我想你必須得到所有的數據,然後用PHP按你想要的方式排序 – CptMisery

回答

0

您可以group by功能嘗試:

"SELECT tag.id, count(*) 
     FROM #__k2_tags as tag 
     LEFT JOIN #__k2_tags_xref AS xref ON xref.tagID = tag.id 
     WHERE xref.itemID IN (".implode(',', $IDs).") 
     AND tag.published = 1 
GROUP BY tag.id"; 
1

試試這個:

$query = " 
SELECT * 
FROM (
    SELECT tag.name, tag.id, count(xref.id) AS tagCount 
    FROM #__k2_tags as tag 
    LEFT JOIN #__k2_tags_xref AS xref ON xref.tagID = tag.id 
    WHERE xref.itemID IN (".implode(',', $IDs).") AND tag.published = 1 
    GROUP BY tag.name, tag.id 
) 
ORDER BY tagCount"; 

通過子查詢中的GroupBy,您可以計算每種標籤類型的標籤出現量。
主要查詢需要按聚合值tagCount進行排序。