SQL-запрос не дает желаемого результата - PullRequest
0 голосов
/ 07 мая 2018

У меня есть две таблицы

  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 = 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 | user_id | имя_пользователя | сообщение | Society_id | COUNT (tp.id)
1 - 252 ----- Shubham ----- HeyHi --------- 3 ----------- 7


То, что я хочу, это

id | user_id | имя_пользователя | сообщение | Society_id | COUNT
1 - 252 ----- Shubham ----- HeyHi --------- 3 --------- 5
2 - 252 ----- Shubham ----- HeyHi --------- 3 --------- 2
3 - 250 ----- Рахул ---------- HeyHi --------- 3 --------- 0
4 - 251 ----- Sachin --------- HeyHi --------- 3 --------- 0

Пожалуйста, помогите мне с запросом.

1 Ответ

0 голосов
/ 07 мая 2018

Есть несколько проблем с вашим запросом: вам нужно изменить соединение на левое соединение, чтобы получить пользователей, у которых нет вложенных сообщений, и добавить 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...