Как подсчитать количество столбцов в 3 таблицах? - PullRequest
0 голосов
/ 05 октября 2018

Очень плохо знаком с присоединениями и нуждается в некоторой помощи.Я создал систему обмена сообщениями и хочу прикрепить прочитанные / непрочитанные значения ко всем темам / беседам, которые есть у людей.Для этого у меня есть 3 таблицы, которые относятся конкретно к потокам:

threads, posts, post_recipients

threads
+ id
+ user_id

posts
+id
+ title
+ text
+ thread_id
+ author

post_recipients
+ id
+ post_id
+ recipient_id
+ status

Я нашел способ получить список потоков, так что теперь для каждого потока яхотите запросить, сколько сообщений прочитано / не прочитано на основе конкретного получателя.

Это то, что я написал до сих пор, но получаю сообщение об ошибке "неизвестный столбец (posts.status), поэтому я предполагаю, что я делаю неправильную сумму или объединение:

select threads.id as thread, sum(posts.status = 1) as cnt 
from threads
left join (select thread_id, posts.user_id, status from posts left join post_recipients on posts.id = post_recipients.post_id) as posts on posts.thread_id = threads.id
where threads.id = 4;

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Согласно вашей схеме, под posts нет столбца status, а под post_recipients.

0 голосов
/ 05 октября 2018

Вы должны попробовать использовать CASE

SELECT threads.id AS thread,
SUM (CASE WHEN post.status = 1 THEN 1 ELSE 0 END) AS read,
SUM (CASE WHEN post.status = 0 THEN 1 ELSE 0 END) AS unread
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...