所以我需要加入5个表。其中一个我有问题。它有两列是不同表的同一外键。

matchdetail
idmatch | idplayer1 | idplayer2 | time | (FK) idmatchnight (FK)

这是一个连接表
player
(PK) idplayer | firstname | secondname | nationality

matchnight
(PK) idmatchnight | location

我的sql查询应该是什么?
我现在的代码:不工作
SELECT * FROM player
INNER JOIN coach ON player.idcoach = coach.idcoach
INNER JOIN sponsor ON player.idsponsor = sponsor.idsponsor
INNER JOIN matchdetail ON player.idplayer = matchdetail.idplayer1
                                        AND player.idplayer = matchdetail.idplayer2
INNER JOIN matchnight ON matchdetail.idmatch
WHERE player.idplayer=:idplayer
;"

idmatch是代理主键,而不是复合键

最佳答案

最好重新编写查询:

SELECT ...
FROM matchdetail
INNER JOIN player AS p1 ON matchdetail.player1=p1.idplayer
INNER JOIN player AS p2 on matchdetail.player2=p2.idplayer
etc...

你现在的加入基本上只允许球员自己比赛。通过加入player两次,您可以获得两个不同玩家的详细信息。

关于php - PHP中的SQL查询,将具有相同外键的两列联接到一个表中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34045094/

10-09 01:01