[英]get count(*) from multiple tables sql
我有三張桌子。
條目
ID title
1 Entry1
2 Entry2
3 Entry3
4 Entry4
user_likes
ID user_id entry_id
1 1 3
2 3 1
3 9 4
4 2 2
user_bookmarks
ID user_id entry_id
1 6 3
2 4 3
3 2 1
4 2 2
我想要的是每個條目的喜歡和書簽的總和。
結果
entryID likes bookmarks
1 1 1
2 1 1
3 1 2
4 1 0
還包含每個條目的喜歡和書簽的總和。
RESULT2
entryID likes+bookmarks
1 2
2 2
3 3
4 1
我在單獨的表格中使用此查詢設法獲得了喜歡和書簽結果。 我無法在一張桌子上一起顯示它們。
SELECT entry.id, COUNT(entry.id) AS likes FROM entry
INNER JOIN user_like ON user_like.entry_id = entry.id GROUP BY entry.id ORDER BY likes DESC
在加入之前,您應該先進行匯總:
select e.*, coalesce(l.likes, 0) as likes,
coalesce(b.bookmarks, 0) as bookmarks,
(coalesce(l.likes, 0) + coalesce(b.bookmarks, 0)) as both
from entries e left join
(select entryid, count(*) as likes
from likes l
group by entryid
) l
on l.entryid = e.id left join
(select entryid, count(*) as bookmarks
from bookmarks
group by entryid
) b
on b.entryid = e.id;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.