我有2张桌子;文章和article_shares(共享文章的次数)
我想显示用户的所有文章(ID 63)以及他们共享文章的次数(可能为0)
文章:
article_id - user_id - title - date
Article_shares
article_id
我正在尝试以下但它只返回有共享的一行,但我想显示所有,即使共享的数量是0(在这种情况下有7篇文章)
SELECT *, DATE_FORMAT(a.date, '%d/%m/%y') as article_date, count(*)
from articles a
join article_shares ash on ash.article_id = a.article_id
where (a.user_id = '63') order by a.article_title asc
答案 0 :(得分:4)
将您的联接更改为左联接
像
这样的东西SELECT *, DATE_FORMAT(a.date, '%d/%m/%y') as article_date, count(*)
from articles a
left join article_shares ash on ash.article_id = a.article_id
where (a.user_id = '63') order by a.article_title asc
看一下这个例子
答案 1 :(得分:3)
只需LEFT JOIN
代替JOIN
。它将为没有共享的文章创建NULL条目。
答案 2 :(得分:3)
将join
条件更改为LEFT JOIN
并尝试。即使article_id在其中为空,这也将返回文章共享。
答案 3 :(得分:2)
你应该使用LEFT JOIN
SELECT *, DATE_FORMAT(a.date, '%d/%m/%y') as article_date, count(*)
from articles a
left join article_shares ash on ash.article_id = a.article_id
where (a.user_id = '63') order by a.article_title asc