SQL统计多对多关系

时间:2016-02-15 14:03:31

标签: mysql sql many-to-many

我有这个架构的SQL问题:

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

多个用户可以浏览一个页面,一个用户可以喜欢多个页面

我想选择我的表格中的所有用户,其中包含与某些fixe用户共同的喜欢页面数量的列 喜欢 : id_user | page_in_common_with_user_#id#_count

2 个答案:

答案 0 :(得分: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 :(得分:-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