【问题标题】:SQL Query not giving the desired resultSQL 查询没有给出想要的结果
【发布时间】:2018-10-17 03:36:53
【问题描述】:

我有两张桌子

  1. 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
    
  2. 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 |计数(tp.id)
1 -- 252----- 舒巴姆----- HeyHi--------- 3 -----------7


我想要的是

标识 |用户 ID |用户名 |消息 |社会ID |计数
1 -- 252----- 舒巴姆----- HeyHi--------- 3---------5
2 -- 252----- 舒巴姆----- HeyHi--------- 3---------2
3 -- 250----- 拉胡尔---------- 嘿嘿--------- 3----------0
4 -- 251----- 萨钦---------嘿嘿--------- 3---------0

请帮我查询。

【问题讨论】:

  • 与查询无关。在您的 cpanel 中,授予该用户访问和更改此数据库的权限
  • 检查您的用户对数据库的权限和权限
  • 第一个错误:你写了tp.COUNT(id),而你应该写COUNT(tp.id)
  • @FDavidov 我更正了我的查询,错误消失了,但我没有得到想要的结果。我想我的查询是错误的。

标签: mysql sql laravel


【解决方案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

【讨论】:

  • 我得到了想要的结果。
猜你喜欢
  • 2019-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-29
相关资源
最近更新 更多