这里发生了如此有趣的事情,我正在使用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
值是静态的,而且是1
和4
。
所以,如果motos
为heatNumber
,我希望我的查询返回表1
的结果,如果motos
为{{1},则返回表heatNumber
的结果将结果限制为4
和tourneyId
。
因此,如果我使用ageId
和tourneyId = 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
我的想法用完了。希望任何人都可以提供帮助:)
答案 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