4 messaggi dal 06 giugno 2006
ciao a tutti. ho le seguenti tabelle:
tabella1:
modello_cellulare - id_rete1 (foreign key)- id_rete2 (foreign key)
------------------------------------------------------------------
nokia | 1 |
samsung | 2 | 3

tabella2:
id_rete (primary key) - nome_rete
----------------------------------
1 | UMTS
2 | GPRS
3 | EDGE

nella tabella1 ci sono due campi rete perchè è possibile che lo stesso cellulare supporti due connessioni di rete diverse.
ho bisogno di una query che estragga tutti i modelli di cellulare con i nomi delle reti.
ho provato la seguente:

SELECT DISTINCT tabella1.modello_cellulare, tabella2.nome_rete AS Rete1, tabella2.nome_rete = null AS Rete2 FROM tabella1, tabella2 WHERE tabella2.id_rete = tabella1.id_rete1
UNION
SELECT DISTINCT tabella1.modello_cellulare, tabella2.nome_rete = null AS Rete1, tabella2.nome_rete AS Rete2 FROM tabella1, tabella2 WHERE tabella2.id_rete = tabella1.id_rete2

il risultato è:

modello_cellulare - id_rete1 (foreign key)- id_rete2 (foreign key)
------------------------------------------------------------------
nokia | UMTS |
samsung | GPRS |
samsung | | EDGE

ma non riesco a eliminare i duplicati!!! potete aiutarmi????
26 messaggi dal 20 luglio 2005
Con qualche join si risolve il tutto

SELECT A.modello_cellulare, B.nome_rete ,C.nome_rete
FROM tabella1 A LEFT JOIN tabella2 B on A.id_rete1 =B.id_rete
LEFT JOIN tabella2 C on A.id_rete2=C.id_rete
4 messaggi dal 06 giugno 2006
grazie legnaste..ma purtroppo non riesco a fare funzionare la query con le due left join che mi hai postato. mi dà errore..

SELECT A.Nome_Modello, B.Nome_Rete as Rete1, C.Nome_Rete as Rete2
FROM SMS_Modello A
LEFT JOIN SMS_Reti B on A.Id_Rete1 = B.Id_Rete
LEFT JOIN SMS_Reti C on A.Id_Rete2 = C.Id_Rete

ecco la tua query riadattata al mio db..
26 messaggi dal 20 luglio 2005
Che db usi?
Che errore ti da?
4 messaggi dal 06 giugno 2006
dunque, sto usando access e l'errore che mi dà è il seguente:
Errore di sintassi (operatore mancante) nell'espressione della query "A.Id_Rete1 = B.Id_Rete LEFT JOIN SMS_Reti C on A.Id_Rete2 = C.Id_Rete"

..che ne dici?
26 messaggi dal 20 luglio 2005
Purtroppo non ho qui access per provare che la soluzione che ti do funzioni...comunque dovrebbe bastare aggiungere qualche parentesi:

SELECT A.Nome_Modello, B.Nome_Rete as Rete1, C.Nome_Rete as Rete2
FROM ((SMS_Modello A
LEFT JOIN SMS_Reti B on A.Id_Rete1 = B.Id_Rete)
LEFT JOIN SMS_Reti C on A.Id_Rete2 = C.Id_Rete)

eventualmente prova a spostare qualche parentesi

fammi sapere
4 messaggi dal 06 giugno 2006
ora è perfetta!!! grazie!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.