Linguaggio SQL. Quarta parte.

In questo quarto intervento sul linguaggio SQL vediamo come estrarre dati da piu' tabelle.

Consideriamo una seconda tabella, SEDI:

ID NOME CITTA
10 DIREZIONE MILANO
20 RICERCA ROMA
30 SVILUPPO ROMA

Che e’ in relazione con la tabella IMPIEGATI tramite la colonna id.

Ricordo che la tabella impiegati e’:

MATRICOLA NOME COGNOME SUPERIORE DATA_ASS SALARIO SEDE
0001 MARIO ROSSI 12-12-1990 5000000 10
0123 PAOLO VERDI 0001 23-11-1992 3500000 10
0234 MARIO BIANCHI 0123 26-02-1995 2100000 20

Quindi per estrarre il nome, il cognome e la citta’ in cui il dipendente lavora, ho bisogno di estrarre i dati da due tabelle.

Una possibile select potrebbe essere:

SELECT nome,cognome,citta FROM IMPIEGATI,SEDI;

In questo caso otterrei nove record, cioe’ il prodotto fra le due tabelle, vediamo il perche’.
In una select di questo tipo Oracle procede in questo modo: estrae nome e cognome dal primo record della tabella impiegati e li associa con la colonna citta della tabella sedi, in questo modo ottiene tre record, questo perche’ nell’istruzione non c’e’ scritto di associare al record la citta’ il cui id corrisponde a quello della coppia nome, cognome. La stessa cosa capita per i successivi record, ottenendo cosi’ nove record estratti, il prodotto delle due tabelle.

L’associazione corretta la si ottiene con una where:

SELECT nome,cognome,citta FROM IMPIEGATI,SEDI

WHERE sede=id;

Abbiamo effettuato una JOIN fra le due tabelle.

In questo modo quando viene estratta la prima coppia nome, cognome viene associata alla citta’ corretta. Attenzione che se nella tabella esistessero id uguali, magari per citta’ differenti, la coppia nome,cognome verrebbe estratta piu’ volte, associata a citta’ differenti; ma questo e’ un problema di progettazione del database (che vedremo piu’ avanti) e non una limitazione dell’istruzione select.

Save n'Keep

Bookmark condivisi e privati.

Con Save n' Keep ora è possibile!

Le categorie della guida