mysql - right - sql join




Qual è la differenza tra INNER JOIN, LEFT JOIN, RIGHT JOIN e FULL JOIN? (2)

Questa domanda ha già una risposta qui:

Qual è la differenza tra INNER JOIN , LEFT JOIN , RIGHT JOIN e FULL JOIN in MySQL ?


Una clausola SQL JOIN viene utilizzata per combinare righe da due o più tabelle, in base a un campo comune tra di esse.

Esistono diversi tipi di join disponibili in SQL:

INNER JOIN : restituisce le righe quando c'è una corrispondenza in entrambe le tabelle.

LEFT JOIN : restituisce tutte le righe dalla tabella di sinistra, anche se non ci sono corrispondenze nella tabella di destra.

RIGHT JOIN : restituisce tutte le righe dalla tabella di destra, anche se non ci sono corrispondenze nella tabella di sinistra.

FULL JOIN : Combina i risultati di entrambi i join esterni sinistro e destro.

La tabella unita conterrà tutti i record di entrambe le tabelle e riempirà i valori NULL per le corrispondenze mancanti su entrambi i lati.

SELF JOIN : viene utilizzato per unire una tabella a se stessa come se la tabella fosse costituita da due tabelle, rinominando temporaneamente almeno una tabella nell'istruzione SQL.

CARTESIAN JOIN : restituisce il prodotto cartesiano dei set di record dalle due o più tabelle unite.

Possiamo prendere ciascuno dei primi quattro join in Dettagli:

Abbiamo due tabelle con i seguenti valori.

TableA

id  firstName                  lastName
.......................................
1   arun                        prasanth                 
2   ann                         antony                   
3   sruthy                      abc                      
6   new                         abc                                           

TableB

id2 age Place
................
1   24  kerala
2   24  usa
3   25  ekm
5   24  chennai

.................................................. ..................

INNER JOIN

Nota : fornisce l'intersezione delle due tabelle, cioè le righe che hanno in comune in TabellaA e TabellaB

Sintassi

SELECT table1.column1, table2.column2...
  FROM table1
 INNER JOIN table2
    ON table1.common_field = table2.common_field;

Applicalo nella nostra tabella di esempio:

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
  FROM TableA
 INNER JOIN TableB
    ON TableA.id = TableB.id2;

Il risultato sarà

firstName       lastName       age  Place
..............................................
arun            prasanth        24  kerala
ann             antony          24  usa
sruthy          abc             25  ekm

SINISTRA

Nota : fornirà tutte le righe selezionate in TabellaA, più eventuali righe selezionate comuni in TabellaB.

Sintassi

SELECT table1.column1, table2.column2...
  FROM table1
  LEFT JOIN table2
    ON table1.common_field = table2.common_field;

Applicalo nella nostra tabella di esempio:

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
  FROM TableA
  LEFT JOIN TableB
    ON TableA.id = TableB.id2;

Risultato

firstName                   lastName                    age   Place
...............................................................................
arun                        prasanth                    24    kerala
ann                         antony                      24    usa
sruthy                      abc                         25    ekm
new                         abc                         NULL  NULL

GIUSTO PARTITO

Nota : fornirà tutte le righe selezionate in TabellaB, più eventuali righe selezionate comuni in TabellaA.

Sintassi

SELECT table1.column1, table2.column2...
  FROM table1
 RIGHT JOIN table2
    ON table1.common_field = table2.common_field;

Applicalo nella nostra tabella di esempio:

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
  FROM TableA
 RIGHT JOIN TableB
    ON TableA.id = TableB.id2;

Risultato

firstName                   lastName                    age     Place
...............................................................................
arun                        prasanth                    24     kerala
ann                         antony                      24     usa
sruthy                      abc                         25     ekm
NULL                        NULL                        24     chennai

FULL JOIN

Nota : restituirà tutti i valori selezionati da entrambe le tabelle.

Sintassi

SELECT table1.column1, table2.column2...
  FROM table1
  FULL JOIN table2
    ON table1.common_field = table2.common_field;

Applicalo nella nostra tabella di esempio:

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
  FROM TableA
  FULL JOIN TableB
    ON TableA.id = TableB.id2;

Risultato

firstName                   lastName                    age    Place
...............................................................................
arun                        prasanth                    24    kerala
ann                         antony                      24    usa
sruthy                      abc                         25    ekm
new                         abc                         NULL  NULL
NULL                        NULL                        24    chennai

Fatto interessante

Per INNER, l'ordine non ha importanza

Per (LEFT, RIGHT o FULL) OUTER si unisce, l'ordine importa

Meglio andare a controllare questo Link che ti fornirà dettagli interessanti sull'ordine di iscrizione






outer-join