Login

           | 

Cerca nel sito...

Ricerca personalizzata

Segnala il sito

Segnala a: Mr. Wong Segnala a: Webnews Segnala a: Icio Segnala a: Oneview Segnala a: Kledy.de Social Bookmarking Segnala a:  FAV!T Social Bookmarking Segnala a: Favoriten.de Segnala a: Seekxl Segnala a: Social Bookmark Portal Segnala a: BoniTrust Segnala a: Power-Oldie Segnala a: Bookmarks.cc Segnala a: Newskick Segnala a: Newsider Segnala a: Linksilo Segnala a: Readster Segnala a: Yigg Segnala a: Linkarena Segnala a: Digg Segnala a: Del.icoi.us Segnala a: Reddit Segnala a: Jumptags Segnala a: Upchuckr Segnala a: Simpy Segnala a: StumbleUpon Segnala a: Slashdot Segnala a: Netscape Segnala a: Furl Segnala a: Yahoo Segnala a: Blogmarks Segnala a: Diigo Segnala a: Technorati Segnala a: Newsvine Segnala a: Blinkbits Segnala a: Ma.Gnolia Segnala a: Smarking Segnala a: Netvouz Segnala a: Folkd Segnala a: Spurl Segnala a: Google Segnala a: Blinklist Information
Social Bookmarking
Banner
Hello, unfortunately not all of the site is translated into English, or is poorly translated. I apologize and ask you to help me. Notify errors, send me translations, together we will build a free service certainly helpful to many!
nozioni SQL JOIN PDF Print E-mail
User Rating: / 2
PoorBest 
Written by Massimiliano Pasqualoni   
Wednesday, 04 May 2005 15:54
There are no translations available.

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

Vediamo come.


 

Joins e chiavi


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.
Nella tabella in basso denominata "Impiegati" il campo "ID_Impiegato" è la chiave primaria, questo significa che non possono esistere due righe con lo stesso identificatore. ID_Impiegato distingue due persone, anche se queste hanno lo stesso nome.

Se guardiamo l’esempio, notiamo che:
La colonna "ID_Impiegato" è la chiave primaria della tabella "Impiegati"
"ID_Prodotto" è la chiave primaria per la tabella "Ordini"
La colonna "ID_Impiegato" nalla tabella "Ordini" è usata per fare riferimento alla persona nella tabella "Impiegati" senza dover usare il nome

Tabella Impiegati
ID_Impiegato

Nome
01
Paolino Paperino
02
Paperon De Paperoni
03
Aldo Baglio
04
Aldo Bisio

Ordini:
ID_Prodotto

Prodotto
ID_Imoiegato
234
Stampante
01
657
Tavolo
03
865
Sedia
03

Fare riferimento a due tabelle

Possiamo seezionare dei dati da due tabelle facendo riferimento alle due tabelle in questo modo:

Esempio

Chi ha ordinato un prodotto, e quali prodotti sono stati ordinati?
SELECT Impiegati.Nome, Ordini.Prodotto
FROM Impiegati, Ordini
WHERE Impiegati.ID_Impiegato=Ordini.ID_Impiegato
Risultato
Nome

Prodotto
Paolino Paperino
Stampante
Aldo Baglio
Tavolo
Aldo Baglio
Sedia


Esempio

Chi ha ordinato una stampante?
SELECT Impiegati.Nome
FROM Impiegati, Ordini
WHERE Impiegati.ID_Impiegato=Ordini.ID_Impiegato
AND Ordini.Prodotto='Stampante'
Risultato

Nome
Paolino Paperino




 

Utilizzare i Join

Possiamo anche selezionare dei dati da due tabelle utilizzando la parola chiave JOIN, come negli esempi seguenti:

Abbiamo tre tipi di Join:
INNER JOIN
LEFT JOIN
RIGTH JOIN
Con significati leggermente diversi



 
INNER JOIN

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

Sintassi
SELECT campo1, campo2, campo3
FROM prima_tabella
INNER JOIN seconda_tabella
ON prima_tabella.chiave_primaria = seconda_tabella.chiave_esterna
Esempio

Chi ha ordinato un prodotto, e quali prodotti sono stati ordinati?
SELECT Impiegati.Nome, Ordini.Prodotto
FROM Impiegati
INNER JOIN Ordini
ON Impiegati.ID_Impiegato=Ordini.ID_Impiegato
Risultato
Nome

Prodotto
Paolino Paperino
Stampante
Aldo Baglio
Tavolo
Aldo Baglio
Sedia


Esempio

Chi ha ordinato una stampante?
SELECT Impiegati.Nome
FROM Impiegati
INNER JOIN Ordini
ON Impiegati.ID_Impiegato=Ordini.ID_Impiegato
WHERE Ordini.Prodotto='Stampante'
Risultato

Nome
Nome

Paolino Paperino




 
LEFT JOIN

Il LEFT 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 campo1, campo2, campo3
FROM prima_tabella
LEFT JOIN seconda_tabella
ON prima_tabella.chiave_primaria = seconda_tabella.chiave_esterna
Esempio

Visualizzare tutti gli impiegati, ed i loro ordini (se ne hanno)
SELECT Impiegati.Nome, Ordini.Prodotto
FROM Impiegati
LEFT JOIN Ordini
ON Impiegati.ID_Impiegato=Ordini.ID_Impiegato
Risultato
Nome

Prodotto
Paolino Paperino
Stampante
Paperon De Paperoni
Tavolo
Aldo Baglio
Tavolo
Aldo Baglio
Sedia
Aldo Bisio
 




 
RIGHT JOIN

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

Sintassi
SELECT campo1, campo2, campo3
FROM prima_tabella
RIGHT JOIN seconda_tabella
ON prima_tabella.chiave_primaria = seconda_tabella.chiave_esterna
Esempio

Mostrare tutti gli ordini, a chi appartengono (se appartengono a qualcuno)
SELECT Impiegati.Nome, Ordini.Prodotto
FROM Impiegati
RIGHT JOIN Ordini
ON Impiegati.ID_Impiegato=Ordini.ID_Impiegato
Risultato
Nome

Prodotto
Paolino Paperino
Stampante
Aldo Baglio
Tavolo
Aldo Baglio
Sedia



 
Last Updated on Friday, 06 May 2005 12:58
 
More articles :

» Gestore Adept: il database è bloccato da un altro processo

There are no translations available. Cercando di familiarizzare con Kubuntu sono incappato in un fastidioso problema. Anche dopo un riavvio senza ripristino di sessione, con relativa certezza che tutti i programmi sono chiusi, se cerco di far...

» Posizionare un modulo all'interno di una pagina dinamica

There are no translations available.Quante volte pu

» un contenuto statico in homepage di Mambo o Joomla

There are no translations available.Studiando le statistiche di accesso mi sono accorto che in tanti cercano sui motori di ricerca come impostare un contenuto statico nella homepage di Mambo/Joomla. Ed in particolare Matteo mi scrive :"Ciao,...

» Fai decollare il tuo stress

There are no translations available. Ok, lo ammetto, di tecnologico non ha nulla, quindi avrei dovuto inserirlo nei , ma non ce l'ho fatta, ho dovuto per forza parlarne!

» Sincronizziamo due cartelle

There are no translations available.Impariamo ad usare uno strumento potente e gratuito che Microsoft ci mette a disposizione per la sincronizzazione delle cartelle.
RocketTheme Joomla Templates