有趣的是,我正在使用MySql数据库,并尝试基于同一个表中的同一列(我在不同别名下选择了同一列)进行连接。如果有人能告诉我这个问题的原因和/或修复我的SQL,我将不胜感激。
我有三张桌子:
电气筒:
tp_id | tourneyId | ageId
1 | 1 | 1
2 | 1 | 1
3 | 1 | 2
这里有所有与我的比赛相关的主要球员数据。它把实际的球员资料和比赛联系在一起。
加热:
heatId | heatNumber
1 1
2 3
3 4
热身赛基本上是摩托队的一个小组。
摩托:
mid | idHeat | result | tpid
1 | 1 | 1 | 1
2 | 3 | 1 | 1
3 | 1 | 2 | 2
4 | 3 | 2 | 2
3 | 2 | 3 | 3
这是我希望根据
heatNumber
值查询结果两次的表。heatNumber
值是静态的,它们是1
和4
。因此,如果
motos
是heatNumber
的话,我希望查询返回表1
的结果,如果motos
是heatNumber
的话,返回表4
的结果,并将结果限制为tourneyId
和ageId
。因此,如果我使用
tourneyId = 1
和ageId = 1
查询结果,那么结果将是:结果:
tp_id | result_when_heat_number_is_1 | result_when_heat_number_is_4 | sum_of_results
1 | 1 | 1 | 2
2 | 2 | 2 | 4
我试图编写查询,但由于我对SQL不太熟悉,所以失败得很惨(未完成且已损坏):
SELECT tp.tp_id, m1.result as r1, m2.result as r2
FROM tourneyplayers tp, motos m1, motos m2
INNER JOIN heats as h1 ON (m2.idHeat = h1.heatId)
INNER JOIN heats as h2 ON (m1.idHeat = h2.heatId)
WHERE tp.tp_id = m1.tpid
AND tp.tp_id = m2.tpid
AND tp.tourneyId = 115
AND ageId = 16
我不确定我是否在正确的道路上与那一个,我试图加入两个摩托预赛两次,但这给了我一个错误
#1054 - Unknown column 'm1.idHeat' in 'on clause'
和我的想法。希望有人能帮忙:) 最佳答案
在WHERE
子句中尝试连接定义:
SELECT tp.tp_id, m1.result as r1, m2.result as r2
FROM tourneyplayers tp, motos m1, motos m2
,heats h1, heats as h2
WHERE tp.tp_id = m1.tpid
AND tp.tp_id = m2.tpid
AND tp.tourneyId = 115
AND ageId = 16
AND m2.idHeat = h1.heatId
AND m1.idHeat = h2.heatId
关于mysql - 来自同一表的列两次连接导致未知列问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44779596/