【发布时间】:2012-12-16 10:55:30
【问题描述】:
我一直在寻找解决这个问题的方法,有很多类似的问题,但没有一个能帮助我解决问题的正确答案。
首先,我的问题/问题:
- 我想对多重连接查询中的某些列进行求和和计数
- 不可能有多个连接吗?我必须嵌套
SELECT查询吗?
这是我的数据库的 SQL 转储以及示例数据:http://pastie.org/private/vq7qkfer5mwyraudb5dh0a
这是我认为可以解决问题的查询:
SELECT firstname, lastname, sum(goal.goal), sum(assist.assist), sum(gw.gw), sum(win.win), count(played.idplayer) FROM player
LEFT JOIN goal USING (idplayer)
LEFT JOIN assist USING (idplayer)
LEFT JOIN gw USING (idplayer)
LEFT JOIN win USING (idplayer)
LEFT JOIN played USING (idplayer)
GROUP BY idplayer
我希望生成一个表格,其中目标、助攻、gw、win 和 play 的列是该列中每一行的总和/计数,如下所示:(使用提供的示例数据)
+-----------+----------+------+--------+----+-----+--------+
| firstname | lastname | goal | assist | gw | win | played |
+-----------+----------+------+--------+----+-----+--------+
| Gandalf | The White| 10 | 6 | 1 | 1 | 2 |
| Frodo | Baggins | 16 | 2 | 1 | 2 | 2 |
| Bilbo | Baggins | 7 | 3 | 0 | 0 | 2 |
+-----------+----------+------+--------+----+-----+--------+
那么,再次重复上述问题,是否可以通过一个查询和多个连接来实现?
如果您提供解决方案/查询,请解释一下!我是正确的关系数据库的新手,在这个项目之前我从未使用过联接。如果您在必要时避免使用别名,我也将不胜感激。
我在没有 sum 和 grouping 的情况下运行了上面的查询,并且我为我执行 SELECT 的每一列得到一组行,我怀疑这些行随后会相乘或相加,但我的印象是分组和/ 或做 sum(TABLE.COLUMN) 会解决这个问题。
另一件事是,我认为,执行 SELECT DISTINCT 或任何其他 DISTINCT 操作将不起作用,因为这会遗漏一些(“重复”)结果。
PS。如果重要的话,我的开发机器是 WAMP,但版本将在 ubuntu/apache/mysql/php 上。
【问题讨论】:
-
您在 DML 上花费了大量时间,所以请创建一个 sqlfiddle。
-
我不知道 sqlfiddle,ic3be3rg 已经在他的答案中创建了一个,所以我现在不会。
标签: mysql database join sum relational-database