Newsgroup: it.comp.www.asp
Titolo: Problema: Query differenza di uno stesso campo su due tabelle

Ciao a tutti ho il seguente problema:
Ho due tabelle aventi lo stesso campo, nella prima tabella il campo
'protocollo' contiene tutti i protocolli esistenti.
Nella seconda tabella lo stesso campo contiene solo alcuni protocolli
Ora se volessi selezionare i dati di entrambe le tabelle rispetto ai
protocolli esistenti nella 2° tabella scriverei la seguente query:
SELECT distinct Ordini.protocollo FROM Ordini,Contabil WHERE
Ordini.protocollo=Contabil.protocollo
Se vorrei fare l'opposto e cioè selezionare tutti i protocolli contenuti
nella prima tabella che non siano contenuti anche nella seconda, mi verrebbe
in mente di scrivere questa query:
SELECT distinct Ordini.protocollo FROM Ordini,Contabil WHERE
Ordini.protocollo<>Contabil.protocollo
il risultato ottenuto sono tutti e 48 records appartenenti alla 1° tabella,
ma io ho bisogno di avere la differenza tra le due tabelle.
Riepilogando
TAB 1    (ordini)                                                 TAB 2
(contabil)            RECORDSET
protocollo
protocollo                        protocollo
-----------------                                                        ---
-----------------                --------------------
|        prot1   |                                                       |
prot2         |                |        prot1       |
-----------------                                                        ---
-----------------                --------------------
|        prot2   |                                                       |
prot4         |                |        prot3       |
-----------------                                                        ---
-----------------                --------------------
|        prot3   |                                                       |
prot5         |                |        prot6       |
-----------------                                                        ---
-----------------                --------------------
|        prot4   |
-----------------
|        prot5   |
-----------------
|        prot6   |
-----------------
Se ho fatto il disegno non è perchè voi non avreste capito è perchè sono
disperato.
Come devo fare?
Grazie
Luca.

 Nella seconda tabella lo stesso campo contiene solo alcuni protocolli


 seconda
select distinct ordini.protocollo from
ordini left join contabil on ordini.protocollo = contabil.protocollo
where contabil.protocollo is null
--
Saluti.  | E-mail address: f.tarizzo (at) 
to.camcom.it
Fabrizio.| DH/DSS PGP Key-ID: 0x0584E074
         | FP:3D5E 8695 887E C89C E4D0  5384 EDA6 52EA 0584 E074
Sent via Deja.com 
http://www.deja.com/
Before you buy.

Davide
Grazie mille
Sei mitico non so cosa farei senza il tuo aiuto.
Ma cos'è una select in una select?
dove con 'in' considero tutti i valori presi dalla 2° query? [ Tipo ' in
(5,4,3) ', "considera 5 4 e 1" ].
Dov'è che potrei imparare queste raffinatezze in SQL Server?
Conosci qualche Tutorial  a riguardo tipo quelli che si trovano in giro su
vbscript e javascript ?

 protocollo from Contabil)
Gia`, non ci avevo pensato. Credo sia piu` efficiente del left join.


vbscript e javascript ?
č una bella domanda... secondo me, rovistare tra i newsgroup e qualche
sito web č la cosa migliore che puoi fare. se conosci l'inglese, ti
consiglio anche microsoft.public.sqlserver.programming dove ci scrive
gente molto ben informata!
--------
MATRO
YahooMessenger:matrello, Icq:matro
RealPopup, the freeware winpopup replacer
http://members.tripod.com/Matro/realpopup.html


Prova con
SELECT distinct Ordini.protocollo FROM Ordini WHERE
Ordini.protocollo NOT IN (    SELECT Contabil.protocollo FROM Contabil )
Saluti
locaduck