我有两张 table
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 |用户名|留言|社会_id | COUNT(tp.id)
1 -- 252----- 舒巴姆 ----- HeyHi--------- 3 -----------7
我想要的是
id |用户 ID |用户名|留言|社会_id | COUNT
1 -- 252----- 舒巴姆 ----- 嗨嗨 --------- 3---------5
2 -- 252----- 舒巴姆 ----- 嗨嗨 --------- 3---------2
3 -- 250-----拉胡尔----------嘿嘿--------- 3---------0
4 -- 251----- 萨钦---------嘿嘿--------- 3---------0
请帮我查询。
最佳答案
您的查询存在一些问题:您需要将联接更改为左联接以获取没有子消息的用户,并添加 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
关于mysql - SQL 查询未给出所需结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50212354/