我有两张桌子
tbl_message
id | user_id | user_name |message | society_id
1 -- 252----- Shubham----- HeyHi--------- 3
2 -- 252----- Shubham----- HeyHi--------- 3
3 -- 250----- Rahul---------- HeyHi--------- 3
4 -- 251----- Sachin--------- HeyHi--------- 3
tbl_submessage
id | post_id | user_id | submessage
1-----1----------252---------Hi-
2-----1----------252---------Hi-
3-----1----------253---------Hi-
4-----1----------253---------Hi-
5-----1----------253---------Hi-
6-----2----------254---------Hi-
7-----2----------254---------Hi-
我必须计算表 tbl_submessage 中的子信息数量,其中post_id = tbl_message 中的消息ID。
基本上tbl_message 包含论坛帖子,而tbl_submessage包含在该帖子中完成的对话。
我尝试了以下查询。
SELECT tk.*,COUNT(tp.id) FROM tbl_message tk,tbl_submessage tp WHERE tk.society_id=3 and tk.id=tp.post_id;
此查询返回
id | user_id | user_name | message | society_id | COUNT(tp.id)
1 - 252 ----- Shubham ----- HeyHi --------- 3 ----------- 7
我想要的是
id | user_id | user_name | message | society_id | COUNT
1 - 252 ----- Shubham ----- HeyHi --------- 3 --------- 5
2 - 252 ----- Shubham ----- HeyHi --------- 3 --------- 2
3 - 250 ----- Rahul ---------- HeyHi --------- 3 --------- 0
4 - 251 ----- Sachin --------- HeyHi --------- 3 --------- 0
请帮我查询。
答案 0 :(得分:1)
您的查询存在以下几个问题:您需要将联接更改为左联接以获取没有子邮件的用户,并添加GROUP BY以逐个用户提供结果。试试这个:
SELECT tk.*, COUNT(tp.id)
FROM tbl_message tk
LEFT JOIN tbl_submessage tp
ON tp.post_id = tk.id
WHERE tk.society_id=3
GROUP BY tk.id