在一个查询中选择包含和不包含赞的活动

时间:2016-03-02 22:04:01

标签: mysql

我想选择所有活动,并与他们一起喜欢。喜欢存储在与事件不同的表格中,因为我需要知道谁喜欢哪个事件和时间。

我知道如何使用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

提前感谢您的建议。

2 个答案:

答案 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子句中使用逗号。