我有这些表
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
答案 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