>Ciao a tutti,
Ciao!
>sono nuovo del forum e anche dei database.
Benvenuto su DotNetHell!
>Vorrei eseguire una query annidata dove la subquery mi restituisce
>due colonne, ma mi da errore. Vi ripoto query e errore, se riuscite
>aiutatemi.
>P.s lavoro sotto ACCES
>select DISTINCT gestori.nome,gestori.codice
>from gestori,tariffa
>where gestori.codice = tariffa.gestore
>AND (tariffa.codice,tariffa.gestore) NOT IN (select tariffa,gestore
>FROM contratto);
>
>ERRORE:
>E' stata scritta unasottoquery che puo' restituisce piu' campi
>senza utilizzare la parola riservata EXISTS nella proposizione
>FROM della query principale. Modificare l'istruzione SELECT nella
>sottoquery per richiedere soltanto un campo.
L'ultimo messaggio è quello che ti dovrebbe far capire l'errore..
non puoi fare una query nella forma:
SELECT * FROM Tabella1 WHERE campo1,campo2 NOT IN (SELECT campo1,campo2 FROM Tabella2)
l'operatore IN (o not in) permette di controllare se un particolare campo sta all'interno di una lista di valori.
Quindi, solo un campo, in questo modo:
SELECT * FROM Tabella1 WHERE campo1 NOT IN (SELECT campo1 FROM Tabella2)
Detto questo, leggiti il link sui books online, l'operatore IN
http://msdn2.microsoft.com/en-us/library/ms177682.aspx
Comunque, anche se non conosco la tua situazione reale, dovrebbe bastare scrivere la tua query così:
SELECT DISTINCT
gestori.nome,
gestori.codice
FROM
gestori,tariffa
WHERE
gestori.codice = tariffa.gestore
AND tariffa.codice NOT IN (select tariffa contratto)
AND tariffa.gestore NOT IN (select gestore contratto);
ciao!
Alx81 =)
http://blogs.dotnethell.it/suxstellino