PDA

Visualizza la versione completa : SQL - SELECT su più tabelle


micro11
11-08-2003, 17:09
Come si fa una SELECT estraendo i dati da più tabelle????

Devo estrarre e visualizzare i dati delle colonne C1, C2, C3 della tabella TAB1 e al colonna C1 della tabella TAB2

Come impostare la SELECT su questo esmpio???

SELECT TAB1.C1, TAB1.C2, TAB1.C3, TAB2.C1 FROM TAB1, TAB2 WHERE TAB1.C1 <= 1000 ORDER BY TAB2.C1

Può essere corretto?

xegallo
11-08-2003, 18:18
in questo modo moltiplichi tutte le righe di tab1 per quelle di tab2 ci deve essere un qualche tipo di relazione

debbelandia
11-08-2003, 18:23
Ho usi le JOIN ma le tabelle devono essere collegate oppure fai delle SELECT annidate, ti avviso che quest'ultima soluzione è presente solo per lo standard sql, mysql non permette di farlo...

CIAO!!!!

micro11
12-08-2003, 09:35
Grazie mille per i consigli ... poi ieri, tra le mille ricerche che ho fatto e un attimo di ricordi mi è venuto in mente.

Le due tabelle hanno la colonna C1 in comune, quindi ho fatto una JOIN

grazie mille di nuovo.

Ecco come ho risolto

SELECT * FROM TAB1, TAB2 WHERE TAB1.C1 = TAB2.C1 AND C1 <= 1000 ..... etc.

Ciao

micro11
12-08-2003, 11:41
E se invece dovessi estrarre dati da tre tabelle correlate l'una all'altra da un unico campo?

Quello che ho provato io è stato:

"SELECT * FROM tab1, tab2, tab3 WHERE tab1.c1 = tab2.c1 AND tab1.c1 = tab3.c1 AND tab2.c1 = tab3.c1 AND c1 >= 100 AND c1 <= 200"

Non mi riesce, mi da come errore:

Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Oracle][ODBC][Ora]ORA-00918: column ambiguously defined


Da cosa può dipendere?

xegallo
12-08-2003, 14:18
l'errore è negli ultimi 2 parametri c1 essendo presente nelle 3 tabelle la clausola where non sa a chi fai riferimento
sostituisci gli ultimi 2


SELECT *
FROM tab1
, tab2
, tab3
WHERE tab1.c1 = tab2.c1
AND tab1.c1 = tab3.c1
AND tab2.c1 = tab3.c1
AND tab1.c1 >= 100
AND tab1.c1 <= 200

Loading