MySQL:加入三个表并显示总计数

时间:2013-08-22 15:17:01

标签: mysql sql

我有以下三个表(简化):

User ( 
    UserID
    UserName
) 

UserMsg ( 
   toUserID
    MsgID
   theMsg

UserMsgComment ( 
   CommentID, 
  MsgID, 
 theComment 
) 

并希望显示每个用户与每个UserMsg的UserMsgComment计数一起的UserMsg-s。如果UserMsg没有UserMsgComment,我想显示'0'。

  UserName | UserMsg | COUNT(UserMsgComment) or show '0' 


SELECT u.*, m.theMsg FROM User u, 
LEFT JOIN UserMsg m ON u.UserID = m.toUserID 

我如何修改此查询以显示每个UserMsg的UserMsgComment总数或0如果UserMsgComment中没有条目?

非常感谢。

1 个答案:

答案 0 :(得分:2)

您只需加入额外的表格并进行相应的分组。请注意,如果要选择u。*,则必须按用户表中的每一列进行分组。

SELECT u.UserID, m.theMsg, COUNT(mc.CommentID)
FROM User u, 
LEFT JOIN UserMsg m ON u.UserID = m.toUserID
LEFT JOIN UserMsgComment mc on m.MsgID = mc.MsgID
GROUP BY u.UserID, m.theMsg