我有一个像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 = 1
和0
)分开。我想我应该用UNION
写一个子查询?但我不知道究竟是怎么回事。
这是我的结构:
答案 0 :(得分:1)
将这些案例更改为
SUM(l.status = 1) AS likes,
SUM(l.status = 0) AS dislikes,