外部表中不存在id的display count = 0

时间:2014-12-11 14:01:40

标签: mysql sql

我有这些表

articles_type

id  type
1   article
2   free
3   review

user_fav

uid  article_type_id
1    1
1    2
2    1
3    2
3    3
4    1
4    2
4    3

如果用户没有添加类型,则需要使用文章类型支持用户,然后显示0

预期结果

表示uid = 1

article_type_id   count
1                 1
2                 1
3                 0
------------------------------

表示uid = 2

article_type_id   count
1                 1
2                 0
3                 0
------------------------------

表示uid = 3

article_type_id   count
1                 0
2                 1
3                 1
------------------------------

表示uid = 4

article_type_id   count
1                 1
2                 1
3                 1

我尝试了以下查询来获得预期的结果。

QUERY:

select article_type_id, count (article_type_id)
from article_types
left join user_fav on user_fav.article_type_id = article_type.id
where uid = 1

2 个答案:

答案 0 :(得分:1)

当条件位于left join的第二个表中时,您需要将on子句包括在内。此外,您的查询需要group by

您想要的查询是:

select a.article_type_id, count(*)
from article_types a left join
     user_fav u
     on u.article_type_id = a.id and u.uid = 1
group by a.article_type_id;

答案 1 :(得分:0)

select article_type_id, coalesce(count(article_type_id),0)
from article_types
left join user_fav on user_fav.article_type_id = article_type.id
where uid = 1