查询返回null而不是带有某些记录的结果

时间:2014-06-10 09:58:23

标签: sql

对不起,也许这个问题很简单,但我无法解决。

我有3张桌子:

  • usersid, name
  • resumesid, title, users_id_fk
  • commentsid, comment, resumes_id_fk

现在这些表有这些记录:

  • users {(1,N1),(2,N2)} ==> 2位用户
  • resumes {(1,title1,1),(2,title2,1)} ==> 2个简历
  • comments {(1,Comment,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)}

但是返回{(,,)}

我的SQL不好,请等。

1 个答案:

答案 0 :(得分: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

你的加入条件也是错误的。