【发布时间】:2015-02-26 11:02:58
【问题描述】:
有这样的表格:
-
图片:
wall_id|picture_id|user_id|likes 1| 1| 1| 2 1| 2| 1| 0 2| 1| 1| 1 2| 2| 2| 2
Pair (wall_id, picture_id) 是唯一的
-
喜欢的人:
wall_id|picture_id|user_id 1| 1| 3 1| 1| 2 2| 1| 2 2| 2| 4 2| 2| 3
我想得到类似的东西:
user_id|pictures_count|likes_count|likers_count
1| 3| 3| 2
2| 1| 2| 2
我试过这个:
select p.user_id as user_id,
count(p.user_id) as pictures_count,
sum(p.likes) as likes_count,
count(distinct l.user_id) as likers_count
from pictures p
left join likers l on p.wall_id = l.wall_id
and p.picture_id = l.picture_id
group by p.user_id
和
select pictures.user_id, count(pictures.user_id) as pictures_count,
sum(pictures.likes) as likes_count,
count(distinct likers.user_id) as likers_count
from pictures, likers
where pictures.picture_id = likers.picture_id
and pictures.user_id = likers.user_id
group by pictures.user_id
但我得到这样的结果:
user_id|pictures_count|likes_count|likers_count
1| 4| 6| 2
2| 2| 4| 2
我应该怎么做才能得到正确的结果?
【问题讨论】: