Join (SQL): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Migliorato la pagina
Funzionalità collegamenti suggeriti: 2 collegamenti inseriti.
 
(10 versioni intermedie di 2 utenti non mostrate)
Riga 1:
{{torna a|Structured Query Language}}
{{F|programmazione|giugno 2018}}
 
Riga 40 ⟶ 39:
 
{{clear}}
<code>Dipartimenti.ID_dipartimento</code> è la [[chiave primaria]] che ha una [[cardinalità]] 0:n nei confronti del campo <code>Impiegati.ID_dipartimento</code>.
 
Nota: Il dipartimento <code>Promozione</code> della tabella <code>Dipartimenti</code> non ha alcuna corrispondenza nella tabella <code>Impiegati</code>. Mentre l'impiegato <code>Grassi</code> non è stato assegnato ad alcun dipartimento ([[NULL]]).
 
== Inner join ==
[[File:SQL Join - 07 A Inner Join B.svg|miniatura|[[Diagramma di Venn]] che rappresenta la {{Codice|codice=INNER JOIN|linguaggio=SQL}} di due tabelle]]
Una {{Codice|codice=INNER JOIN|linguaggio=SQL}} crea una nuova tabella combinando i valori delle due tabelle di partenza (<math>A</math> e <math>B</math>) basandosi su una certa regola di confronto. La query compara ogni riga della tabella <math>A</math> con ciascuna riga della tabella <math>B</math> cercando di soddisfare la regola di confronto definita. Quando la regola di join viene soddisfatta, i valori di tutte le colonne delle tabelle <math>A</math> e <math>B</math> vengono combinate in un'unica riga nella costruzione della tabella risultante. La {{Codice|codice=INNER JOIN|linguaggio=SQL}} è la forma di join usata più di frequente nelle applicazioni e rappresenta la modalità predefinita.
 
Riga 104:
</syntaxhighlight>
 
La ''keyword'' {{Codice|codice=USING|linguaggio=SQL}} è supportata da [[Microsoft SQL Server Management Studio]], [[MySQL]], [[Oracle Database|Oracle]], [[PostgreSQL]], [[SQLite]], e [[IBM DB2|DB2/400]].
 
=== Natural join ===
Riga 133:
 
=== Cross join ===
[[File:SQL Join - 08 A Cross Join B.svg|miniatura|Immagine che rappresenta la {{Codice|codice=CROSS JOIN|linguaggio=SQL}} di due tabelle]]
Una {{Codice|codice=CROSS JOIN|linguaggio=SQL}}, ''cartesian join'' o ''product'' fornisce le basi (le infrastrutture informatiche) attraverso cui tutti i tipi di {{Codice|codice=INNER JOIN|linguaggio=SQL}} operano. Il risultato di una {{Codice|codice=CROSS JOIN|linguaggio=SQL}} è il [[prodotto cartesiano]] di tutte le righe delle tabelle che concorrono alla query di ''join''. È come dire che stiamo facendo una {{Codice|codice=INNER JOIN|linguaggio=SQL}} senza impostare la regola di confronto o in cui la regola di confronto ritorna sempre vero.
 
Riga 213 ⟶ 214:
 
=== Left outer join ===
[[File:SQL Join - 01b A Left Join B.svg|miniatura|[[Diagramma di Venn]] che rappresenta la {{Codice|codice=LEFT OUTER JOIN|linguaggio=SQL}} di due tabelle]]
Il risultato di una query {{Codice|codice=LEFT OUTER JOIN|linguaggio=SQL}} (o semplicemente {{Codice|codice=LEFT JOIN|linguaggio=SQL}}) per le tabelle <math>A</math> e <math>B</math> contiene sempre tutti i record della tabella di sinistra (''left'') <math>A</math>, mentre vengono estratti dalla tabella di destra (''right'') <math>B</math> solamente le righe che trovano corrispondenza nella regola di confronto della join. Questo significa che se la clausola {{Codice|codice=ON|linguaggio=SQL}} trova zero righe in <math>B</math>, la {{Codice|codice=JOIN|linguaggio=SQL}} mostrerà una riga risultante con valore {{Codice|codice=NULL|linguaggio=SQL}} in tutte le colonne corrispondenti al risultato per le colonne di <math>B</math>.
 
Riga 240 ⟶ 242:
 
=== Right outer join ===
[[File:SQL Join - 03b A Right Join B.svg|miniatura|[[Diagramma di Venn]] che rappresenta la {{Codice|codice=RIGHT OUTER JOIN|linguaggio=SQL}} di due tabelle]]
Una {{Codice|codice=RIGHT OUTER JOIN|linguaggio=SQL}} (o {{Codice|codice=RIGHT JOIN|linguaggio=SQL}}) semplicemente ricalca il funzionamento della {{Codice|codice=LEFT OUTER JOIN|linguaggio=SQL}}, ma invertendo l'ordine delle tabelle interessate.
 
Riga 279 ⟶ 282:
 
=== Full outer join ===
[[File:SQL Join - 05b A Full Join B.svg|miniatura|[[Diagramma di Venn]] che rappresenta la {{Codice|codice=FULL OUTER JOIN|linguaggio=SQL}} di due tabelle]]
Una {{Codice|codice=FULL OUTER JOIN|linguaggio=SQL}} combina i risultati delle due tabelle <math>A</math> e <math>B</math> tenendo conto di tutte le righe delle tabelle, anche di quelle che non hanno corrispondenza tra di loro.
 
Riga 348 ⟶ 352:
* [[Sort merge join]]
* [[SQL]]
 
== Altri progetti ==
{{interprogetto|preposizione=sulla}}
 
== Collegamenti esterni ==