SQL Join

Follow on Facebook  Share on Twitter  Share on Google  Share on Linkedin  Share on Blogger  Share on Flipboard  Share on Tumblr 

Joins e chiavi

A volte dobbiamo selezionare dati da due o più tabelle per avere dei risultati complete. In questi casi occorre effettuare dei Join.

Le tabelle in un database possono essere messe in relazione l’una con l’altra tramite delle chiavi.
Una chiave si dice primaria quando ha un valore unico per le righe. Lo scopo è quello di legare i dati tra le tabelle senza dover ripetere i dati in tutte le tabelle.
Una chiave si dice esterna se è il riferimento alla chiave primaria di un'altra tabella.

Abbiamo cinque tipi principali di Join:

  • INNER JOIN
  • LEFT OUTER JOIN
  • RIGTH OUTER JOIN
  • CROSS JOIN
  • FULL JOIN

La differenza sta nella modalità con cui vengono unite le tabelle.

Prediamo in esame due tabelle che utilizzeremo per gli esempi:

Tabella Società

Societa Codice
Microsoft 1
Oracle 2
Sun 3
HP 4
MorpheusWeb 5

Tabella Ordini

NumeroOrdine Importo CodiceSocieta
1001 100 1
1002 200 2
1003 50 3
1004 300 4
1005 80 1
1006 120 2

INNER JOIN

L'INNER JOIN restituisce le righe delle tabelle se c'è un legame, altrimenti non le mostra.

Sintassi

SELECT
	Campi
FROM Prima_tabella
INNER JOIN Seconda_tabella
	ON prima_tabella.chiave_primaria = seconda_tabella.chiave_esterna

Esempio

SELECT
	Societa, NumeroOrdine
FROM Societa
INNER JOIN Ordini
	ON Societa.Codice = Ordini.CodiceSocieta

Otteniamo:

Societa NumeroOrdine
Microsoft 1001
Oracle 1002
Sun 1003
HP 1004
Microsoft 1005
Oracle 1006

LEFT OUTER JOIN

Il LEFT OUTER JOIN restituisce tutte le righe della prima tabella (nell’esempio Impiegati), anche se non ci sono corrispondenze nella seconda tabella (nell’esempio Ordini).

Sintassi

SELECT
	Campi
FROM Prima_tabella
LEFT OUTER JOIN Seconda_tabella
	ON prima_tabella.chiave_primaria = seconda_tabella.chiave_esterna

Esempio

SELECT
	Societa, NumeroOrdine
FROM Societa
LEFT OUTER JOIN Ordini
	ON Societa.Codice = Ordini.CodiceSocieta

Otteniamo:

Societa NumeroOrdine
Microsoft 1001
Oracle 1002
Sun 1003
HP 1004
Microsoft 1005
Oracle 1006
MorpheusWeb NULL

RIGTH OUTER JOIN

Un RIGTH OUTER JOIN restituisce tutte le righe della seconda tabella, anche se non ci sono legami con la prima

Sintassi

SELECT
	Campi
FROM Prima_tabella
RIGTH OUTER JOIN Seconda_tabella
	ON prima_tabella.chiave_primaria = seconda_tabella.chiave_esterna

Esempio

SELECT
	Societa, NumeroOrdine
FROM Ordini
LEFT OUTER JOIN Societa
	ON Societa.Codice = Ordini.CodiceSocieta

Otteniamo:

Societa NumeroOrdine
Microsoft 1001
Oracle 1002
Sun 1003
HP 1004
Microsoft 1005
Oracle 1006
MorpheusWeb NULL

FULL JOIN

Il full outer join restituisce tutte le righe delle due tabelle messe in join, è in pratica la combnazione tra una left join ed una right join

Sintassi

SELECT
	Campi
FROM Prima_tabella
FULL JOIN Seconda_tabella
	ON prima_tabella.chiave_primaria = seconda_tabella.chiave_esterna

Esempio

SELECT
	Societa, NumeroOrdine
FROM Societa
FULL JOIN Ordini
	ON Societa.Codice = Ordini.CodiceSocieta

Otteniamo:

Societa NumeroOrdine
Microsoft 1001
Oracle 1002
Sun 1003
HP 1004
Microsoft 1005
Oracle 1006
MorpheusWeb NULL

CROSS JOIN

La cross Join restituisce il prodotto cartesiano tra due tabelle, ovvero tutte le combinazioni dei record.

Sintassi

SELECT
	Campi
FROM Prima_tabella
CROSS JOIN Seconda_tabella

Esempio

SELECT
	Societa, NumeroOrdine
FROM Societa
CROSS JOIN Ordini

Otteniamo:

Societa NumeroOrdine
Microsoft 1001
Oracle 1001
Sun 1001
HP 1001
MorpheusWeb 1001
Microsoft 1002
Oracle 1002
Sun 1002
HP 1002
MorpheusWeb 1002
Microsoft 1003
Oracle 1003
Sun 1003
HP 1003
MorpheusWeb 1003
Microsoft 1004
Oracle 1004
Sun 1004
HP 1004
MorpheusWeb 1004
Microsoft 1005
Oracle 1005
Sun 1005
HP 1005
MorpheusWeb 1005
Microsoft 1006
Oracle 1006
Sun 1006
HP 1006
MorpheusWeb 1006

SQL Join

 

A colpo d'occhio

  • Script C#

    Script C# per tutte le esigenze: database, sessioni, file, contatori, stringhe, date, e-mail, e tanto altro

  • Manuale C#

    Manuale completo di C# per principianti e non

  • Script VB.Net

    Script VB.Net Visual Basic .net: database, sessioni, file, contatori, stringhe, date, e-mail, e tanto altro

  • Manuale SQL

    Manuale di SQL con particolare attenzione a T-SQL di Microsoft SQL Server

  • Seo

    Tecniche di posizionamento indicizzazione e ottimizzazione dei siti web per nei motori di ricerca

  • Manuale CSS

    Manuale completo sui CSS per principianti e non

Be Responsive

HTML 5

HTML 5

HTML 5 è un linguaggio di markup utilizzato per la strutturazione e il contenuto delle pagine Web.

CSS 3

CSS 3

CSS 3 è l'ultima evoluzione dei fogli di stile CSS. Contiene molte novità come angoli arrotondati, ombre, sfumature, transizioni o animazioni.

jQuery

jQuery

jQuery è una libreria JavaScript cross-platform progettata per semplificare lo scripting lato client.