MySQL在另一个表中按投票排序
我有这样的桌子:MySQL在另一个表中按投票排序,mysql,join,Mysql,Join,我有这样的桌子: entries: ID TITLE 1 Xyhargka 2 Hypothermia 3 Scale 及 VOTE1和VOTE2具有条目的ID。VOTE1代表2票,VOTE2代表1票 我正在尝试构造一个返回以下内容的查询: ID TITLE VOTES 1 Xyhargka 3 3 Scale 2 2 Hypothermia
entries:
ID TITLE
1 Xyhargka
2 Hypothermia
3 Scale
及
VOTE1和VOTE2具有条目的ID。VOTE1代表2票,VOTE2代表1票
我正在尝试构造一个返回以下内容的查询:
ID TITLE VOTES
1 Xyhargka 3
3 Scale 2
2 Hypothermia 1
我一直在看JOIN语句,但我似乎不明白。。。我知道这不是有效的MySQL,但下面是我想要的伪代码:
SELECT v1 + v2 as votes, entries.* FROM entries
JOIN (SELECT count(vote1) * 2 as v1 FROM votes WHERE vote1 = entries.id)
JOIN (SELECT count(vote2) * 1 as v2 FROM votes WHERE vote2 = entries.id)
ORDER BY votes
这就是我在SQLSERVER中的实现方式,不确定MySQL中是否存在差异
SELECT V.ID,
SUM( V.COUNT) AS TOTALCOUNT
FROM (SELECT E1.ID AS ID, 2 AS COUNT
FROM VOTES AS V
JOIN ENTRIES AS E1
ON V.VOTE1 = E1.ID
UNION ALL
SELECT E2.ID AS ID, 1 AS COUNT
FROM VOTES AS V
JOIN ENTRIES AS E2
ON V.VOTE2 = E2.ID) AS V
GROUP BY V.ID
ORDER BY TOTALCOUNT DESC
您期望的结果与您的输入和对投票含义的描述完全不符。请更正示例或更好地解释您的意图。@JimGarrison已更新。。。如果伪代码看起来是错误的,我肯定是的。这是经过测试的吗?它看起来不错,而且运行正常,但没有返回预期结果..我需要更多信息来帮助您..;)没有关系!这是我的问题。非常好用,谢谢!
SELECT V.ID,
SUM( V.COUNT) AS TOTALCOUNT
FROM (SELECT E1.ID AS ID, 2 AS COUNT
FROM VOTES AS V
JOIN ENTRIES AS E1
ON V.VOTE1 = E1.ID
UNION ALL
SELECT E2.ID AS ID, 1 AS COUNT
FROM VOTES AS V
JOIN ENTRIES AS E2
ON V.VOTE2 = E2.ID) AS V
GROUP BY V.ID
ORDER BY TOTALCOUNT DESC