爲了擴展我以前的問題 - 我的數據庫中有兩個表,我想提取某些信息。如下表:SQL:連接到同一主數據庫的多個外鍵的表(2)
(player): player_id (primary), playerName
(match): match_id (primary), playerID1, playerID2, playerID3, scorer etc..
你給我提供了下面的代碼來獲得的球員的名字:
SELECT p.Name
FROM `match` m
INNER JOIN `player` p
ON p.player_id IN (m.playerID1, m.playerID2, m.playerID3) //etc
作品beauitfully感謝 - 但只是兩個調整,我想作:
1)我想返回得分手的名字以及球員的名字。由於m.scorer是一個ID,如果p.Name已經映射到m.playerID,我如何將它映射到p.Name屬性? 2)上面的查詢返回所有玩家的名字。我很快就會添加一個搜索功能,以便爲某個玩家搜索所有匹配項。是否有排除該球員的結果(因爲我們已經知道這名球員是在比賽中,因爲他被搜查)。因此,幾乎所有的比賽都會返回給某位球員,但是從結果中排除實際搜索到的球員。對不起,如果這不清楚,讓我知道,我會擴大它。
再次感謝了很大的幫助
表是完全錯誤的(這就是爲什麼你需要擺弄)。 'match'表不應該有'player_ds'列表作爲列的列表,這會打破2NF。即使你有這個問題「固定」,這將導致未來大量問題。你應該有一個'match_player(match_id,player_id,score)'和PK'(match_id,player_id)'。這消除了所有問題,並且** any **查詢所需的代碼將變得簡單。 「多個PK引用一個父母」是一個不同的問題,而不是一個問題.. – PerformanceDBA