web-dev-qa-db-fra.com

Comment utiliser plusieurs jointures à gauche dans SQL?

Est-il possible d'utiliser plusieurs jointures à gauche dans une requête SQL?

    LEFT JOIN
        ab 
    ON
        ab.sht = cd.sht

je veux ajouter pour attacher une autre requête comme celle-ci?

    LEFT JOIN
        ab AND aa
    ON
        ab.sht = cd.sht
           AND
        aa.sht = cc.sht

Est-ce que ça va marcher?

42
cute

Oui c'est possible. Vous avez besoin d'un ON pour chaque table de jointure.

LEFT JOIN ab
  ON ab.sht = cd.sht
LEFT JOIN aa
  ON aa.sht = cd.sht

Incidemment, ma préférence de formatage personnel pour le SQL complexe est décrite dans http://bentilly.blogspot.com/2011/02/sql-formatting-style.html . Si vous en écrivez beaucoup, cela vous aidera probablement.

45
btilly

Oui, mais la syntaxe est différente de celle que vous avez.

SELECT
    <fields>
FROM
    <table1>
    LEFT JOIN <table2>
        ON <criteria for join>
        AND <other criteria for join>
    LEFT JOIN <table3> 
        ON <criteria for join>
        AND <other criteria for join>
23
Daniel DiPaolo

Le SQL requis sera un peu comme: - 

SELECT * FROM cd
LEFT JOIN ab ON ab.sht = cd.sht
LEFT JOIN aa ON aa.sht = cd.sht
....

J'espère que ça aide.

10
Knowledge Craving

Vous avez deux choix, selon votre ordre de table

create table aa (sht int)
create table cc (sht int)
create table cd (sht int)
create table ab (sht int)

-- type 1    
select * from cd
inner join cc on cd.sht = cc.sht
LEFT JOIN ab ON ab.sht = cd.sht
LEFT JOIN aa ON aa.sht = cc.sht

-- type 2
select * from cc
inner join cc on cd.sht = cc.sht
LEFT JOIN ab
LEFT JOIN aa
ON aa.sht = ab.sht
ON ab.sht = cd.sht
0
RichardTheKiwi