簡體   English   中英

從多個表sql中獲取count(*)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM