Newsgroup: it.comp.appl.access
Titolo: Query di "esclusione"

In un post di qualche tempo fa si spiegava come ottenere la selezione di
record di 2 tabelle aventi valori uguali nei rispettivi campi, per cui  se
in prima_tabella.campo1 ho i valori
1
2
3
4
5
6
 ed in seconda_tabella.campo1 i valori
1
3
5
6
il risultato della query č
1
3
5
6
Il  mio problema č che devo scrivere una query di selezione che mi dia i
record che *non* hanno valori uguali, cioč dovrei ottenere come risultato
della query delle tabelle sopra
2
4
Ho provato settando Join, tendando tutto ciň che la mia (poca) esperienza e
la mia fantasia mi suggerivano, ma non ho trovato la soluzione. Per motivi
che non capisco, la condizione immediatamente piů logica "WHERE
prima_tabella.campo1 <> seconda_tabella.campo1" mi produce tutti i record di
prima_tabella, seppur in ordine "sparso".
Mi date una mano ad approfondire le mie conoscenze?
Giannib

 ha scritto nel messaggio
news:EV8A9.21428$Zn2.6...@twister1.libero.it...

Se il tuo problema č quello di creare una query che visualizzi  i valori del
camo1 dell prima_tabella che non hanno equivalente bella seconda_tabella,
prova con una query che abbia il seguente codice SQL:
SELECT prima_tabella.campo1
FROM prima_tabella LEFT JOIN seconda_tabella ON prima_tabella.campo1 =
seconda_tabella.campo1
WHERE (((seconda_tabella.campo1) Is Null));
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

WHERE (((seconda_tabella.campo1) Is Null));
Aggiungo una cosa : in campo insiemistico quello che tu chiedi è di
fare la differenza tra un campo A={1,2,3,4,5,6} e B={1,3,5,6,7,9}.
Per cui  si ha A-B={2,4}, mentre B-A={7,9}, cioè A-B è uguale a tutti
quegli elementi appartenenti ad A AND  non appartanenti a B; B-A è
uguale a tutti gli elementi appartenenti a B AND non appartenenti ad
A.
Per cui fare una cosa come chiedi tu (per es. dato :A={1,2,3,4,5,6}
B={1,3,5,6} , voglio fare A-B), devi prima trovare tutti gli elementi
che appartengono ad A , poi  gli elementi che appartengono a B AND
sono uguali agli elementi che appartengono ad A e poi sottrare ad A
gli elementi di B .
Provando a costruire la SELECT  passo passo:
1°
SELECT A.a (gli elementi di A), B.b (gli elementi di B)
FROM A LEFT JOIN (metto in relazione  tutti gli elementi di A con ...)
B (solo gli elementi di B uguali ad A) ON A.a = B.b
Come risultato avrai:
  a  |  b
  1  |  1
  2  |  
  3  |  3
  4  |  
  5  |  5  
  6  |  6
Salta all'occhio che gli elementi che ci interessano non si trovano
nella tabella B, quindi:
2°
SELECT A.a, B.b
FROM   A     LEFT JOIN     B ON   A.a = B.b
WHERE B.b IS NULL ( cioè gli elementi che non appartengono a B)
Come risultato :
  a  |  b
  2  |
  4  | 
************
Prova col right Join ( cioè da B ad A), sempre passo passo ( per
chiarezza , aggiungi a B altri due numeri diversi a quelli di A , tipo
: 7 e 9 )
Ciao. Fabrizio.
(Access XP (sp2), Win ME, P4 1Ghz, 320 RAM)


Attenzione: mi sono dimenticato di dirti che è importante la posizione
di A rispeto a B nelle SELECT  quando fai i LEFT/RIGHT JOIN.
Per cui per fare B-A o scrivi : FROM A RIGHT JOIN B ON A.a = B.b
oppure : FROM B LEFT JOIN A  ON B.b = A.a


"oizirbaF" <fabrizio...@SPAMtiscalinet.it> ha scritto nel messaggio
news:gmd2tu4d58q33a4rg...@4ax.com...
[CUT]
Scusa, ma perché rispondi a me invece che a nic_cardi????
Io non ho alcun propblema da risolvere. ;-)


Io non ho alcun propblema da risolvere. ;-)
Perchè aggiungevo al tuo post, come integrazione,  e non a quello di
nic_cardi:
"Aggiungo una cosa : in campo insiemistico quello che tu chiedi è di
fare la differenza ... " 
Da qui in poi parlo con Nic_Cardi e non con te : purtroppo , malgrado
i soldi che ho speso per mandarti a scuola, ormai dispero che tu possa
imparare qlc :-)))))) (risatona scemona)
Cmq che ne pensi dell'excursus matematico-insiemistico? Era utile ?
(si lo so che ho detto che ci vediamo Lunedì , ma passavo di qua)
