Mysql SQL присоединиться вопрос - PullRequest
0 голосов
/ 09 июня 2010

Я пытаюсь найти информацию обо всех сделках вместе с тем, сколько комментариев они получили.Мой запрос

select deals.*,
       count(comments.comments_id) as counts
from deals 
left join comments on comments.deal_id=deals.deal_id 
    where cancelled='N'

Но теперь он показывает только те сделки, в которых есть хотя бы один комментарий.В чем проблема?

Ответы [ 3 ]

2 голосов
/ 09 июня 2010

Вы пропустили GROUP BY

select deals.*, count(comments.comments_id) as counts 
from deals 
left join comments on comments.deal_id=deals.deal_id 
where cancelled='N'
GROUP BY deals.deal_id
0 голосов
/ 09 июня 2010

«Отменен» столбец комментариев? Если это так, вам нужно переместить «cancelled = 'N'" из предложения WHERE в предложение ON (from deals left join comments on comments.deal_id = deals.deal_id AND comments.cancelled='N') или выполнить фильтрацию в виде встроенного представления (from deals left join (select * from comments where cancelled='N') комментариев к comments.deal_id = deal.deal_id) поскольку его фильтрация в предложении where отбрасывает все строки, для которых отменено значение null.

0 голосов
/ 09 июня 2010

Попробуйте изменить left join на right outer join

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...