共同

2016-02-15 20 views
1

SQL計數許多一對多的關係,我有一個SQL問題,此模式:共同

table user(id, name) table page(id, name) table page_user(id_page, id_user)

一個頁面可以由多個用戶喜愛,一個用戶可以像多頁

我想選擇在我的表中的所有用戶與共同喜歡網頁的一些定勢用戶 數列,如: id_user | page_in_common_with_user_#id#_count

回答

2

假設「喜歡頁」是指page_user表,那麼你可以使用一個自聯接:

select pu.id_user, count(pux.id_page) as PagesInCommonWithX 
from page_user pu left join 
    page_user pux 
    on pu.id_page = pux.id_page and 
     pux.id_user = $x 
group by pu.id_user; 
-1

你可以很容易地做到這一點此查詢:

select id_user , count(id_page) 
from user left outer join page_user on user.id = page_user.id_user 
group by id_user 
+0

這只是顯示的用戶已喜歡的頁數。 –