有趣的是,我正在使用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值是静态的,它们是14
因此,如果motosheatNumber的话,我希望查询返回表1的结果,如果motosheatNumber的话,返回表4的结果,并将结果限制为tourneyIdageId
因此,如果我使用tourneyId = 1ageId = 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/

10-15 02:49