我仍然在學習SQL,而我的大腦與這個關係很難。從「多對多」的SQL關係中選擇*
說我有3個表:
teams
players
和teams_players
作爲我的鏈接表
所有我想要做的就是運行一個查詢來獲取每個團隊和他們的球員。
我嘗試這樣做:
SELECT *
FROM teams
INNER JOIN teams_players
ON teams.id = teams_players.team_id
INNER JOIN players
ON teams_players.player_id = players.id
但它返回一個單獨的一行每隊每個球員。加入正確的方式來做到這一點,或者我應該做其他事情嗎?
-----------------------------------------編輯
好吧,從我聽到的情況來看,這不一定是一種不好的方法。當我正在做循環時,我將不得不按照團隊對數據進行分組。
我還沒有嘗試過提供的修改過的SQL語句,但我今天會回覆給您。
要回答關於結構的問題 - 我想我沒有想到返回的行結構是導致我混淆的一部分。在這種特殊情況下,每隊僅限於4人(或更少),所以我想這將有助於我的結構是類似如下:
teams.id, teams.name, players.id, players.name, players.id, players.name, players.id, players.name, players.id, players.name,
1 Team ABC 1 Jim 2 Bob 3 Ned 4 Roy
2 Team XYZ 2 Bob 3 Ned 5 Ralph 6 Tom
編輯你的SQL語句讓它在屏幕上更具可讀性如果你不介意 –
這看起來像預期的行爲。你能舉一個你期望的結果行的例子嗎?我不知道如何將球隊和所有球員作爲結果集中的一排返回。 –
如果您想要特定團隊的結果 - 您需要添加一個將結果限制爲特定團隊的「WHERE」子句。哦,'SELECT *'被大多數DBA所詬病,所以你應該指定你想要的列 –