mysql left join 左串連查詢關聯n多張表

來源:互聯網
上載者:User

標籤:html   處理   style   amount   cat   .com   select   star   mysql   

left join 左串連即以左表為基準,顯示座標所有的行,右表與左表關聯的資料會顯示,不關聯的則不顯示。關鍵字為left join on。 
**基本用法如下: 

select table a left join table b on a.id = b.ta_id**

注意:1??其中on後面關聯的欄位應該是同一欄位(兩表關聯的外鍵) 
2??由於以左表為基準,左表一條記錄如果對應右表多條記錄,那查出的資料中右表的資料也只顯示一條,如果要都顯示,可以用group_contact()將欄位用逗號隔開顯示在一條記錄上。所以右表不管有幾張,如果和左表都是一對一關聯性,則沒問題,存在一對多關聯性時,需要一定的處理。

三表關聯 則如下:

select table a left join table b(left join table c on b.id = c.tb_id) on a.id = b_ta.id

 

再拓展一下,如果關聯七八張表,就像下面這條sql,用法其實無非就像三表關聯一樣,一層套一層,只不過關係要理順好。

SELECT    GROUP_CONCAT(u.stuffName),    GROUP_CONCAT(ee.id),    ee.applyTime,    p.orderState,    GROUP_CONCAT(        concat(            s.departureAirportCode,            ‘-‘,            s.landingAirportCode        )    ),    p.pnr,    sns.c,    sns.b,    sns.a,    ee.pnr newp,    GROUP_CONCAT(        CONCAT(            s.departureDate,            ‘ ‘,            s.departureTime        )    ),    GROUP_CONCAT(s.flightNum),    GROUP_CONCAT(s.seatClass),    c.rebookintSumFee,    c.customerRebookintFee,    c.amountReceivable,    o.orderNum,    comp.companycode,    comp.companyNameFROM    endrose eeLEFT JOIN passenger p ON ee.passengerId = p.idLEFT JOIN segment s ON s.endroseId = ee.idLEFT JOIN costfee c ON c.endroseId = ee.idLEFT JOIN(    SELECT        ns.passengerId,        GROUP_CONCAT(ns.flightNum)b,        GROUP_CONCAT(ns.seatClass)a,        GROUP_CONCAT(            CONCAT(                ns.departureDate,                ‘ ‘,                ns.landingDate            )        )c    FROM        segment ns    WHERE        ns.orderState = 0    GROUP BY        ns.passengerId)sns ON sns.passengerId = ee.passengerIdLEFT JOIN(    passenger passe    LEFT JOIN airticketorder o ON passe.orderId = o.id)ON passe.id = ee.passengerIdLEFT JOIN(    passenger pass    LEFT JOIN `user` u ON pass.stuffUUID = u.id)ON pass.id = ee.passengerId LEFT JOIN(    passenger passen LEFT JOIN(        airticketorder ao left join(            `user` ua left join                 company comp on comp.id = ua.companyId            )ON ao.bookerstuffId = ua.id        ) ON passen.orderId = ao.id) ON passen.id = ee.passengerIdgroup by ee.applyTime

這條sql中尤其是最後一個left join,關聯了好幾張表,要好好理順才行。 
寫的時候從外層往裡寫,一層一層left join,才不容易出錯。


http://www.cnblogs.com/amyStart/p/5965472.html




mysql left join 左串連查詢關聯n多張表

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.