2017-08-29 52 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进行排序。