2

私は2つのテーブルを持っています。articlesとarticle_shares(記事が共有された回数)

ユーザー(id 63)によるすべての記事と、ユーザーが記事を共有した回数(0になる可能性があります)を表示したい

記事:

article_id - user_id  - title - date

Article_shares

article_id

次のことを試していますが、共有がある1行のみが返されますが、共有数が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
4

4 に答える 4

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

この例を見てください

SQLフィドルデモ

また、JOINの概要–JOINの基本もご覧ください。

于 2012-10-12T05:29:11.987 に答える
3

LEFT JOINの代わりに実行してくださいJOIN。共有のない記事にはNULLエントリが作成されます。

于 2012-10-12T05:26:52.910 に答える
3

joinとして条件を変更してLEFT JOINみてください。これにより、article_idがnullの場合でも、記事の共有が返されます。

于 2012-10-12T05:28:05.630 に答える
2

LEFTJOINを使用する必要があります

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
于 2012-10-12T05:28:04.733 に答える