簡體   English   中英

MySQL聯接三表

[英]MySQL join three table

我有三張桌子

表格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。

您的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;
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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM