显示我与引座员共同的条目,以喜欢和不喜欢分隔
Posted
技术标签:
【中文标题】显示我与引座员共同的条目,以喜欢和不喜欢分隔【英文标题】:Show entries that I have in common with an user, seperated by likes and dislikes 【发布时间】:2016-11-12 13:14:27 【问题描述】:我有一个页面系统,就像 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
写一个子查询?但我不知道具体是怎样的。
这是我的结构:
【问题讨论】:
你没有聚合函数。那么,为什么要使用 GROUP BY 子句?并查看meta.***.com/questions/333952/… 为了避免重复的页面条目,我输出为页面标题。sum(l.status) as liked, count(l.status)-sum(l.status) as disliked
应该怎么做?我主要想计算我与特定用户的相互喜欢/不喜欢。
什么是title_de
?
【参考方案1】:
将这些情况改为
SUM(l.status = 1) AS likes,
SUM(l.status = 0) AS dislikes,
【讨论】:
以上是关于显示我与引座员共同的条目,以喜欢和不喜欢分隔的主要内容,如果未能解决你的问题,请参考以下文章