从同一个表中连接两次列导致未知的列问题

时间:2017-06-27 11:51:30

标签: mysql

这里发生了如此有趣的事情,我正在使用MySql DB并尝试基于同一个表中的同一列(我在不同的别名下选择)进行连接。如果有人能告诉我这个问题的原因和/或修复我的SQL,我将不胜感激。

我所拥有的是三张桌子:

Tourneyplayers:

tp_id | tourneyId | ageId
1     | 1         | 1
2     | 1         | 1
3     | 1         | 2

这包含与我的锦标赛相关的所有主要球员数据。它将实际玩家档案和锦标赛联系在一起。

预赛:

heatId | heatNumber
1        1
2        3
3        4

Heats基本上是一组摩托车。

MOTOS:

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的结果,如果motos为{{1},则返回表heatNumber的结果将结果限制为4tourneyId

因此,如果我使用ageIdtourneyId = 1查询结果,则结果将为:

结果:

ageId = 1

我试着编写查询,但由于我对SQL不那么熟悉,我已经失败了(未完成且已经破坏):

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

我不确定我是否选择了正确的路径,我尝试将两次加热加热两次,但这给了我一个错误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 我的想法用完了。希望任何人都可以提供帮助:)

2 个答案:

答案 0 :(得分:2)

确保你在motos中有idHeat 不要混合隐式和显式联接

  SELECT 
    tp.tp_id
    , m1.result as r1
    , m2.result as r2 
  FROM tourneyplayers tp
  INNER JOIN motos as m1 ON tp.tp_id = m1.tpid 
  INNER JOIN motos as m2 ON tp.tp_id = m2.tpid 
  INNER JOIN heats as h1 ON m2.idHeat = h1.heatId 
  INNER JOIN heats as h2 ON m1.idHeat = h2.heatId 
  WHERE  tp.tourneyId = 115 
  AND ageId = 16

答案 1 :(得分:1)

尝试使用<table> <thead> <tr> <th *ngFor="let key of getKeys()">{{ key }}</th> </tr> </thead> <tbody> <tr *ngFor="let speak of speakers"> <td *ngFor="let key of getKeys()">{{ speak[key] }}</td> </tr> </tbody> </table> 子句中的连接定义:

WHERE