加入投票表并总结所有投票

Fab*_*ius 7 mysql sql join

我有两张桌子.其中一个包含引号,另一个列出每个引用的所有给定投票(+1或-1).出于演示目的,我已经制作了两个表的简化版本:

行情

+----+-----------------------------------------------------------------------+
| ID | quote                                                                 |
+----+-----------------------------------------------------------------------+
|  1 | If you stare into the Abyss long enough the Abyss stares back at you. |
|  2 | Don't cry because it's over. Smile because it happened.               |
|  3 | Those that fail to learn from history, are doomed to repeat it.       |
|  4 | Find a job you love and you'll never work a day in your life.         |
+----+-----------------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

投票

+----+-------+------+
| ID | quote | vote |
+----+-------+------+
|  1 |     1 |   -1 |
|  2 |     1 |   -1 |
|  3 |     3 |    1 |
|  4 |     3 |   -1 |
|  5 |     3 |    1 |
|  6 |     3 |   -1 |
|  7 |     4 |    1 |
|  8 |     4 |    1 |
|  9 |     4 |    1 |
+----+-------+------+
Run Code Online (Sandbox Code Playgroud)

我想在我的网站上列出所有报价,并显示相应的投票数.首先,SQL查询应读取所有引号,然后加入投票表.但是,它应该最终列出每个报价的所有投票的总和.因此,SQL查询的结果如下所示:

+----+-----------------+------+
| ID | quote           | vote |
+----+-----------------+------+
|  1 | If you stare... |   -2 |
|  2 | Don't cry...    | NULL |
|  3 | Those that...   |    0 |
|  4 | Find a job...   |    3 |
+----+-----------------+------+
Run Code Online (Sandbox Code Playgroud)

SQL查询如何看起来像前面描述的那样?

Tad*_*eck 6

SELECT
    `quotes`.`id` as `ID`,
    `quote`.`quote` as `quote`,
    SUM(`votes`.`vote`) AS `vote`
FROM  `quotes`
    LEFT JOIN `votes`
        ON `quotes`.`id` = `votes`.`quote`
GROUP BY `quotes`.`id`
Run Code Online (Sandbox Code Playgroud)

应该做的伎俩.

假设id列是主键(它们对于每个记录都是唯一的).