JOIN - relazioni tra due o più tabelle di un database | |
![]() |
|
| |
|
ASP Center
Articoli
Referenze
Script
FAQ
Downloads
Siti utili
ASP
E-Commerce con ASP
Menu Javascript
Area Aziende
Cocktail
Registrazione domini
|
JOIN - relazioni tra due o più tabelle di un database
Nell'articolo relativo all'SQL DML abbiamo esaminato, tra l'altro, l'istruzione SELECT per la ricerca dei dati su un database. Abbiamo parlato anche un po della teoria dei database relazionali nell'articolo introduttivo all'utilizzo dei database, spiegando che le strutture di dati si possono anche "spezzare" in più tabelle, allo scopo di ottimizzare il lavoro e potenziare le ricerche, dando cosi vita al concetto di relazione.
In SQL esiste un sistema nativo per la creazione di query su più tabelle (che vedremo a breve) ed esiste l'istruzione JOIN (letteralmente "unione") che svolge la funzione di effettuare ricerche su più tabelle. Prendiamo come esempio il database creato negli articoli precedenti di questa sezione, in cui abbiamo esaminato, fino ad ora, il linguaggio SQL. Abbiamo un database generico contenente la tabella "utenti" composta dai campi "id" di tipo Contatore, "nome" e "cognome" di tipo Testo. Supponiamo adesso di voler attribuire ad ogni utente una serie di professioni. Create quindi, attraverso l'istruzione CREATE dell'SQL DDL la tabella "professioni" composta dai campi "id" (Contatore), "utente" (Numerico) e "professione" (Testo). Segue il codice SQL CREATE per la creazione di detta tabella
CREATE TABLE professioni
(
id AutoIncrement PRIMARY KEY
utente Integer
professione Text (20) NOT NULL
)
Il campo "id" della tabella "utenti" si relazionerà col campo "utente" della tabella "professioni", dando vita al concetto di relazione uno a molti, ovvero "un utente che svolge più professioni".Popolate la tabella "professioni" con dei dati a caso, ad esempio assegnando due professioni a ciascun utente, specificando nel campo "utente" lo stesso valore del campo "id" della tabella "utenti". La sintassi per accedere ad un campo di una tabella, quando vi sono le relazioni, è la seguente nome_tabella.nome_campoAd esempio per accedere al campo "nome" della tabella "utenti" scriveremo utenti.nomee cosi via, mentre le tabelle si scrivono in successione separate da una virgola. Facciamo adesso un esempio con codice SQL nativo in cui estraiamo tutti i dati dalle due tabelle di riferimento SELECT * FROM utenti, professioni WHERE utenti.id = professione.utenteLa relazione è questa utenti.id = professione.utenteAttenzione: due campi, per essere relazionati, devono essere dello stesso tipo. Possiamo naturalmente scegliere solo determinati campi da visualizzare e, ad esempio, visualizzare solo i dati relativi ad un utente
SELECT
utenti.nome, utenti.cognome, professioni.professione
FROM
utenti, professioni
WHERE
utenti.id = professione.utente
AND
utente.id = 1
Diamo adesso uno sguardo all'istruzione JOIN. Sulla scorta delle specifiche di ricerca già definite, traduciamo l'ultimo esempio SQL riportato con la sintassi dell'istruzione JOIN
SELECT
utenti.nome, utenti.cognome, professioni.professione
FROM
utenti
INNER JOIN
professioni
ON
utenti.id = professione.utente
WHERE
utente.id = 1
La sintassi dell'istruzione JOIN è la seguente
SELECT * FROM tab_uno INNER JOIN tab_due ON tab_uno.campo = tab_due.campoLa differenza nell'utilizzo del sistema tradizionale piuttosto che dell'istruzione JOIN consiste nel fatto che la prima è più semplice da utilizzare ma meno potente, mentre la seconda è più potente della prima, ma sovraccarica il lavoro del DBMS in fase di elaborazione delle ricerche. Consiglio dunque un utilizzo più intenso del sistema tradizionale. |
Newsletter
Stringhe di Conn.
|
||
| © 2008 ASP Center di Luca Ruggiero - P. IVA 05564851219 - Disclaimer | Privacy | Pubblicità | Supportaci | Staff | Contatti | ||||
| Appunti PHP | Giornale Webmaster | Mr.Webmaster | Download | DevSpy.com | ASPCode.it | ClaudioGarau.it | Webmaster Facile | Come Faccio | CodiceFacile.it | I Programmatori | By Luciani | VoiceXML Italian User Group | Giochi | Extro Web Site | Morpheus Web | AG Web Solutions | Net-Free | PC Sicuro | PC Self | Tutorial Web | Dablones | ||||