我有5张桌子:
一个用户可以有多个乐队,一个乐队可以有很多用户,一个乐队可以有很多乐队,一个乐队可以有很多演出
给定用户id 1,我想返回所有的演出与他们的相关乐队。
任何帮助都将不胜感激。
发布于 2011-05-12 15:15:34
像这样吗?
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发布于 2011-05-12 15:12:20
您可以在一行中这样做,但简单地说,基本思想是首先使用bands_users和带连接用户,其中用户id在用户和bands_users中,带id位于bands_users和波段中。这将给你一个用户的乐队列表。然后,使用bands_gigs和gig加入乐队,其中乐队id在乐队和bands_gigs中,gig id在bands_gigs和gig中。现在,您有了用户所在的乐队列表的演出列表。
发布于 2011-05-12 15:16:38
首先要做的事:
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; https://stackoverflow.com/questions/5980116
复制相似问题