首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql 5表选择查询

mysql 5表选择查询
EN

Stack Overflow用户
提问于 2011-05-12 15:05:54
回答 3查看 799关注 0票数 0

我有5张桌子:

  1. users
  2. bands_users
  3. bands
  4. bands_gigs
  5. gigs

一个用户可以有多个乐队,一个乐队可以有很多用户,一个乐队可以有很多乐队,一个乐队可以有很多演出

给定用户id 1,我想返回所有的演出与他们的相关乐队。

任何帮助都将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-12 15:15:34

像这样吗?

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 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中。现在,您有了用户所在的乐队列表的演出列表。

票数 1
EN

Stack Overflow用户

发布于 2011-05-12 15:16:38

首先要做的事:

代码语言:javascript
复制
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; 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5980116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档