2014-06-10 3 views
0

Прошу прощения, возможно, этот вопрос прост, но я не могу его решить.Query возвращает null вместо результата с некоторой записью

У меня есть 3 таблицы:

  • users (id, name)
  • resumes (id, title, users_id_fk)
  • comments (id, comment, resumes_id_fk)

Теперь эти таблицы имеют следующие записи:

  • users {(1, N 1), (2, N 2)} ==> 2 пользователей
  • resumes {(1, title1, 1), (2, title2, 1)} ==> 2 резюме
  • comments {(1, комментарий, 2)} ==> 1 комментарий

Я хочу, чтобы выполнить запрос, который возвращает название и количество комментариев для конкретного пользователя резюме:

SELECT 
    u.name, r.title, count(c.comment) 
from 
    users u, resumes r, comments c 
where 
    c.id = r.id 
    and r.id = u.id 
    and u.id = 2 
group by 
    u.name, r.title; 

Проблема заключается в что мой исключенный результат: {(N2, ,0)}

Но вернулся {(,,)}

My SQL не является хорошим, пожалуйста.

+3

Эти условия соединения выглядят неправильно. Не должно быть 'c.resumes_id_fk = r.id И r.users_id_fk = u.id И u.id = 2'? –

ответ

5

Вы используете INNER JOIN, изменение LEFT JOIN исправит вашу проблему.

SELECT u.name, r.title, count(c.comment) 
from users u 
left join resumes r on r.users_id_fk =u.id 
left join comments c on c.resumes_id_fk = r.id 
where u.id = 2 
group by u.name, r.title 

И ваше условие соединения также неверно.

+0

благодарит за помощь. –

Смежные вопросы