2011-04-19 117 views

回答

2

您需要使用GROUP BY子句将注释与JOIN语句正确聚合以链接两个表。

SELECT pr.press_release_subject, COUNT(*) AS CommentCount 
FROM tbl_press_release pr 
    LEFT JOIN tbl_press_release_comment prc ON prc.press_release_id = pr.id 
GROUP BY press_release_subject 
ORDER BY CommentCount DESC 

的加入可能无法正常工作,是因为我不知道你的列名。

您当前的查询基本上会要求每个新闻发布主题以及每条评论的计数。没有GROUP BY,您的DBMS不知道如何分开计数。

GROUP BY告诉您的DBMS聚集函数必须在指定的列中为每个不同值返回一条记录。例如,上面的查询告诉要计算主题为press_release_subject的评论数。如果使用聚合函数(如COUNT,SUM,AVG等),则必须在GROUP BY子句中指定任何想要并排返回的常规列。

+0

您可以按聚合排序。列别名甚至在'ORDER BY'中是OK的 – 2011-04-19 14:01:06

+0

@Martin啊,必须是'WHERE'子句,你不能那么。谢谢! – zneak 2011-04-19 14:05:34

+0

感谢您的信息,我还没有使用GROUP BY,我的SQL-fu很弱! – negzero7 2011-04-19 14:12:04

1
SELECT 
    pr.press_release_subject, 
    COUNT(*) CommentCount 
FROM tbl_press_release pr 
LEFT JOIN tbl_press_release_comment prc 
ON pr.press_release_id = prc.press_release_id 
GROUP BY pr.press_release_subject 
ORDER BY COUNT(*) DESC 
+0

这也适用于我,谢谢! – negzero7 2011-04-19 14:12:22

相关问题