显示我与用户共同的条目,由喜欢和不喜欢分开

时间:2016-11-12 13:14:27

标签: mysql sql performance

我有一个像facebook上的页面系统,每个用户都可以喜欢甚至不喜欢页面。 status = 1就像,0不喜欢。

这是我的疑问:

SELECT  
p.title_de, de, p.keyname, l.status,
(CASE WHEN l.status = '1' THEN title_de END) AS liked,
(CASE WHEN l.status = '0' THEN title_de END) AS disliked
FROM pages_likes l  
JOIN pages p on p.id = l.page_id 
WHERE  p.keyname != 'rship'  AND l.uid = '311'  
GROUP BY l.page_id  
ORDER BY p.title_de ASC

问题:

1)我还想计算该用户所有喜欢和不喜欢的条目。目前我为此编写了一个额外的查询,但我想知道在该查询中实现该计数是否更有效?我尝试使用COUNT但是我只从整个查询中得到一个结果。

2)我想显示我对这个用户的共同/共同喜欢(uid表示user_id)。我尝试将AND 'uid' = 1添加到WHERE,但这不起作用。这也应该由喜欢和不喜欢(status = 10)分开。我想我应该用UNION写一个子查询?但我不知道究竟是怎么回事。

这是我的结构:

enter image description here

1 个答案:

答案 0 :(得分:1)

将这些案例更改为

SUM(l.status = 1) AS likes,
SUM(l.status = 0) AS dislikes,