2010-11-05 11 views

risposta

22

La tabella di sinistra è la prima tabella nella selezione. Sì, i tuoi due esempi sono equivalenti.

3

Vedi questo per una buona procedura dettagliata su unisce: http://en.wikipedia.org/wiki/Join_(SQL)

E sì, entrambe le affermazioni sono equivalenti :-)

+0

Questo URL attualmente punta a example.com ... –

+1

@djacobson: Grazie, corretto. Niente è così smaccilo da non poter essere rovinato! –

+2

Smiple, eh? * Infatti –

1

Sì, è determinato dal lato dell'operatore aderire al tabella appare su. I tuoi due esempi sono davvero equivalenti.

+0

La tua risposta sembra contraddire se stessa. Tu dici che la posizione relativa all'operatore è ciò che determina quale tabella è sinistra e destra, ma nel mio esempio vengono scambiati e tu dici che sono equivalenti. – Jake

+0

Leggere attentamente, per favore: ho detto la posizione relativa all'operatore ** JOIN **, non all'operatore di uguaglianza. –

6

Il tavolo giusto è sempre il tavolo a cui si sta aderendo. Quindi sì, entrambe le tue affermazioni sono equivalenti.

JOIN [Table] ON ... 

[Tabella] è sempre la tabella corretta.

3

"left" è il risultato di tutto ciò che appare prima nell'intera clausola FROM durante la lettura da sinistra a destra, incluso il risultato di altri JOIN, sottocommissioni, VISUALIZZAZIONI e PROCEDURE MEMORIZZATE. L'ordine delle tabelle nella parte ON della clausola JOIN è irrilevante, quindi entrambe le istruzioni SQL sono equivalenti.

Il join regolare mostra solo le righe in cui la clausola ON di JOIN è vera, mentre LEFT JOIN mostra anche i record da "left" se la condizione è false (mostrando NULL per qualsiasi colonna da "right" presente in il SELEZIONA).

Ad esempio:

-- People:   -- Car 
id | name   owner_id | model 
---+------------  ---------+------------ 
1 | Paul   1  | Ferrari 
2 | Nancy   2  | Porsche 
3 | Arthur   NULL  | Lamborghini 
4 | Alfred   10  | Maserati 

> select people.name, car.model from people join car on car.owner_id=people.id; 

name  | model 
---------+-------------- 
Paul  | Ferrari 
Nancy | Porsche 
2 record(s) found 

> select people.name, car.model from people left join car on 
    car.owner_id=people.id; 

name  | model 
---------+-------------- 
Paul  | Ferrari 
Nancy | Porsche 
Arthur | NULL 
Alfred | NULL  
4 record(s) found 

> select people.name, car.model from people left join car on 
    people.id = car.owner_id; 

name  | model 
---------+-------------- 
Paul  | Ferrari 
Nancy | Porsche 
Arthur | NULL 
Alfred | NULL  
4 record(s) found 
+0

Questa non è la domanda. –

Problemi correlati