我有5個表:MySQL的5臺選擇查詢
- 用戶
- bands_users
- 帶
- bands_gigs
- 演出
一個用戶可以有很多樂隊,一樂隊可以有很多用戶 一個演出可以有很多樂隊,一個樂隊可以有很多演唱會
鑑於用戶ID 1,我想返回所有與他們相關的樂隊演出。
任何幫助,將不勝感激。
我有5個表:MySQL的5臺選擇查詢
一個用戶可以有很多樂隊,一樂隊可以有很多用戶 一個演出可以有很多樂隊,一個樂隊可以有很多演唱會
鑑於用戶ID 1,我想返回所有與他們相關的樂隊演出。
任何幫助,將不勝感激。
這樣的事情?
SELECT g.*, b.*
FROM users u
LEFT JOIN band_users bu ON u.id = bu.uid
LEFT JOIN bands b ON bu.bid = b.id
LEFT JOIN bands_gigs bg ON b.id = bg.bid
LEFT JOIN gigs g ON bg.gid = g.id
WHERE u.id = 1
你可以在一行中做到這一點,但是從簡單開始,基本思想是你首先將用戶加入band_users和樂隊,其中用戶id在用戶和band_users中,樂隊id在兩個band_users和樂隊。這會讓你看到用戶所在的樂隊列表。然後,你可以加入band_gigs和gig的樂隊,樂隊id在樂隊和band_gigs中,樂隊ID在band_gigs和演唱會中。現在你有一個用戶所在樂隊列表的演出列表。
東西入手:
SELECT band.name,
gig.name
FROM users
JOIN bands_users
ON users.name = bands_users.userName
JOIN bands
ON bands.name = bands_users.bandName
JOIN bands_gigs
ON bands.name = bands_gigs.bandName
JOIN gigs
ON bands_gigs.gigName = gigs.name
WHERE users.id = 1;