我希望有人可以幫助或指出正確的方向,我對主要關注 FE 的 SQL 查詢很陌生,并且有以下問題。
我有 4 個表需要連接并從每個表中提取資訊:
用戶、小隊、玩過的游戲和游戲。
當前可能通過 FK 匹配的列是:
Users
id
Squads
id
Player
Users.id FK
Games played
id
Squads.id FK
Games.id FK
Games
id
name
Games_played.id FK
我需要將 Games.name 從 Games 表獲取到 Squad 表,Games_played 是我的中間點,我想知道如何使用它來獲取這些資訊。
我可以將 Games.id 從它作為 Games_played 的 FK 傳遞給 Squads。
Games.id corespondents 和 Games.name (我想要的列),
雖然 Games 和 Squads 的行數不同,但我想顯示 Games.name,這可能會在 Squads 上重復出現。
示例所需的輸出:
Users.id = 1 | Squads.Players = w | Games_played.Games.id = 1 | Games.name = x
Users.id = 2 | Squads.Players = y | Games_played.Games.id = 2 | Games.name = z
Users.id = 3 | Squads.Players = s | Games_played.Games.id = 1 | Games.name = x
所以 Games_played.Games.id = 1 將始終顯示 Games.name = x
Users.id 通過 FK 傳遞給 Squads。
來自小隊的球員,
Games.id 來自 Games,但作為 FK 傳遞給 Games_played 并能夠以 Games_played.Games.I 的身份加入 Squads,
Games.name 來自 Games 并以某種方式附屬于 Squads。
任何幫助將不勝感激。謝謝你。
uj5u.com熱心網友回復:
我需要將 Games.name 從 Games 表獲取到 Squad 表
我猜你的意思是你想要一個回傳Squad表內容的查詢,并由Games.name關聯的Game. 從可用的結構來看,自然且唯一合理的替代方案似乎是:
select
s.*,
gp.Games_id,
g.name
from
Squads s
left join Games_played gp on gp.Squads_id = s.id
left join Games g on gp.Games_id = g.id
如果您想忽略沒有任何關聯的小隊,請Games_played使用普通的內部joins 而不是left joins。
雖然 Games 和 Squads 的行數不同,但我想顯示 Games.name,這可能會在 Squads 上重復出現。
這本質上不是問題,但請注意,鑒于您的關鍵結構,您的結果將為 的每一行加上一行Games_played,加上(在這種left join情況下)與任何不相關的每個小隊都有一行Games_played。后一組將具有 NULLGames_id和name. 這可能意味著某些小隊有多個行,每個小隊都有不同的Games_id并且可能不同name的 s。它也可能意味著一些 多行Games,每行都有不同的Squad細節。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/430922.html
標籤:mysql
