mysql - SQL 查询没有给出想要的结果
问题描述
我有两张桌子
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中消息的子消息的数量。
基本上 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 | 用户名 |消息 | 社会ID | COUNT(tp.id)
1 -- 252----- Shubham----- HeyHi--------- 3 -----------7
我想要的是
编号 | 用户 ID | 用户名 |消息 | 社会ID | 计数
1 -- 252----- 舒巴姆----- HeyHi--------- 3----------5
2 -- 252----- 舒巴姆--- -- 嘿嘿--------- 3---------2
3 -- 250----- 拉胡尔---------- 嘿嘿------ --- 3---------0
4 -- 251----- 萨钦--------- HeyHi--------- 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
推荐阅读
- c++ - CGAL CDT 默认参数
- python - 'NoneType' 没有属性(使用 pyodbc/sql 连接)
- c# - 有没有办法在 C# 中读取精确数量的拆分整数?
- java - Bridge 设计模式在 Java 中是否只有一个抽象类和接口类?
- python - 如何在图像中找到垂直线?(Opencv and Python) 总垂直雪崩需要罚款
- javascript - 在 JQuery 中查找 div 中的图像
- git - Github post push hook
- sql - 累积计算 - 基于样本数据
- data-structures - 你如何实现一个有序的哈希表?
- html - 如何将外部 React 库添加到静态 HTML 页面