MySQL加入三个表

时间:2016-05-06 05:17:57

标签: mysql

我有三张桌子

表1

userid  name
1       A
2       B
3       C

表2

trackid     userid  track_des
1           2           123
2           3           234
3           3           345

表3

trackid     description
1               ABC
2               BCD

我希望输出像userid = 3

userid  name    trackid     description     track_des
3       C       2           BCD             234
3       C       3           NULL            345

我正在使用MySQL。

2 个答案:

答案 0 :(得分:2)

您的table1看起来包含用户,而您的table3看起来包含曲目。您的table2看起来像是一个连接表,用于描述用户和曲目之间的多对多关系。似乎连接表可能包含对table3中不存在的轨道的引用,例如。 trackid 3。要生成您在示例中显示的输出,请首先选择与userid 3对应的记录,然后将其加入table2(您的多对多连接表)。接下来,您应该连接到包含曲目的表格。这里需要左连接,因为将找不到连接表中列出的某些轨道,但这些行仍应包含在输出中。剩下的唯一任务是指定要返回的列。以下是完整查询的内容:

select
    u.*,
    ut.trackid,
    t.description,
    ut.track_des
from table1 as u
inner join table2 as ut
    on ut.userid = u.userid
left outer join table3 as t
    on t.trackid = ut.trackid
where u.userid = 3;

答案 1 :(得分:0)

select
    t1.*,
    t2.trackid,
    t3.description,
    t2.track_des
from table1 as t1
inner join table2 as t2
    on t2.userid =t1.userid
left join table3 as t3
    on t3.trackid = t2.trackid
where t1.userid = 3;