Daniele Merli
a- a+

Tavole

Fino a questo punto abbiamo visto come ricercare dati da unadetermintata tavola.
In altre parole abbiamo considerato una tavola come unarchivio in cui sono memorizzati dei dati e mediante SELECTabbiamo estratto i dati che ci interessavano.
Un sistema di database relazionale viene considerato comeuna raccolta di tavole e quindi la visione che abbiamo deveessere espansa.
I concetti generali li avevamo accennati inizialmente.
Utilizzando lo statement SELECT abbiamo specificato il nomedelle colonne scrivendo semplicemente il suo nome nonpreoccupandoci invece di definire la tavola in cui questeerano contenute in quanto, di fatto, gli esempi erano sempree solo relativi a una singola tavola.
Un determinato nome di colonna potrebbe essere comune apiu' tavole. 
Nel caso in cuiSELECT deve ricercare dati da piu' tavole e' chiaroche se specificassimo solo il nome di un campo potrebbetrovarsi nei pasticci, proprio per il fatto che la colonnapotrebbe essere definita in piu' tavole.
SQL al fine di evitare questo tipo di problemi accetta laspecifica del nome di colonna preceduto da nome della tavolain cui si trova questo.
Al fine di portare un esempio a quanto detto prima possiamosupporre di avere le seguenti due tavole.

TAVOLA AAA NOME INDIRIZZO
----------------
Rossi V.Roma
..... ......

TAVOLA BBB NOME IMPORTO
----------------
Rossi 100000
..... ......

Volendo eseguire un costrutto con SELECT potremmoscrivere:

SELECT AAA.NOME, BBB.NOME FROM AAA, BBB;

Tutti gli statement in cui si richiedono colonne da due opiu' tavole vengono chiamati JOIN.
In pratica gli operatori JOIN sono quelli che distinguono undatabase relazionale da uno non relazionale.
La sintassi di quanto detto prima e':

SELECT tavola1.campo, tavola2.campo ... FROMtavola1,tavola2;

L'esempio precedente avrebbe creato come risultato lavisualizzazione di tutte le combinazioni possibili tra ilcampo NOME di AAA e quello NOME di BBB.
La specifica WHERE e' utilizzabile anche in questo casoal fine delle righe dalla visualizzazione.

E' possibile creare costrutti del tipo:

SELECT AAA.*, BBB.* FROM AAA, BBB WHERE AAA.NOME = BBB.NOME;

oppure utilizzando anche piu' tavole

SELECT A.CITTA, B.NOME, C.IMPORTO FROM A, B, C;

SQL permette di assegnare un nuovo nome alle tavole di undeterminato statement.
L'operazione e' normalmente conosciuta comeALIAS.
Una tavola ALIAS rimane attiva solo durante l'esecuzionedello statement.
Lo standard ANSI riconosce ALIAS con il nome dicorrelazione.

SELECT A.*,B.* FROM TAVOLA1 A, TAVOLA2 B WHERE A.CAMPO = B.CAMPO;

Assegna come ALIAS il nome A alla TAVOLA1 e B alla TAVOLA2.