我想选择所有活动,并与他们一起喜欢。喜欢存储在与事件不同的表格中,因为我需要知道谁喜欢哪个事件和时间。
我知道如何使用GROUP BY选择喜欢和合并行的事件。但是我不能选择那些没有喜欢的活动和有喜欢的活动。 有办法怎么做?
这是我的查询:
SELECT e.*,count(p.id_plusone) as likes
FROM plusone p,event e
WHERE p.event_id = e.id_event
GROUP BY e.id_event
ORDER BY likes
数据库结构如下所示:
event plusone (like)
id_event id_plusone
.... event_id
user_id
timestamp
提前感谢您的建议。
答案 0 :(得分:1)
您可能需要从事件表到类表的LEFT JOIN来获取那些没有任何喜欢的事件。如下所示:
SELECT e.*,count(p.id_plusone) as likes
FROM event e left join plusone p on p.event_id = e.id_event
GROUP BY e.id_event ORDER BY likes
答案 1 :(得分:0)
您需要使用outer join
:
SELECT e.*, count(p.id_plusone) as likes
FROM event e
LEFT JOIN plusone p ON p.event_id = e.id_event
GROUP BY e.id_event
ORDER BY likes
一般来说,我会尽量避免在from
子句中使用逗号。