2011-02-09 20 views
34

È possibile utilizzare più join sinistro in sql query? se no allora qual è la soluzione?USE MULTIPLE LEFT JOIN

LEFT JOIN 
     ab 
    ON 
     ab.sht = cd.sht 

voglio aggiungere ad atach un'altra query come questa ad esso? funzionerà?

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

Wil questo lavoro?

risposta

40

Sì, è possibile. È necessario un ON per ogni tabella di join.

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

Tra l'altro la mia preferenza personale per la formattazione SQL complesso è descritto in http://bentilly.blogspot.com/2011/02/sql-formatting-style.html. Se stai per scrivere molto di questo, probabilmente ti sarà d'aiuto.

+0

Cosa vuoi dire? Si può spiegare nel codice/interrogazione? – cute

+0

Ho aggiunto un piccolo esempio di codice. – btilly

17

Sì, ma la sintassi è diverso da quello che avete

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> 
+0

Grazie per aver mostrato i criteri AND sui JOIN. Mi stavo rompendo la testa spostando erroneamente alcuni termini di ricerca nella clausola WHERE! – Santosh

8

Lo SQL richiesto sarà alcuni, come: -

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

Speranza che aiuta.

+1

La visualizzazione di LEFT JOIN in questo formato, uno dopo l'altro, pone le cose in prospettiva. –

0

Hai due scelte, a seconda del vostro ordine tavolo

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

non funziona – cute

+0

@cute vedi risposta aggiornata – RichardTheKiwi