Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL在另一个表中按投票排序_Mysql_Join - Fatal编程技术网

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