Newsgroup: it.comp.appl.access
Titolo: problema: estrarre dalla tabella A solo le righe che non compaiono nella tabella B; come lo faccio?

Immagiono che per un problema cosě esista una soluzione elegante e
banale... ma non mi viene proprio :-(((
Allora, ho 2 tabelle, A e B.
in entrabme ho 2 campi, ARTICOLO e COLORE, ogni articolo puň essere
presente piů volte e con colori diversi.
A č una lista di ordini (le copie articolo-colore possono essere
presenti varie volte)
B č una categoria di articoli, contiene un insieme di copie
articolo-colore, ogni copia appare una sola volta.
Es.:  (P200, P300.... sono gli articoli; 1,2,3....46... sono i colori
degli articoli)
A.articolo   A.colore
P200          1
P200          1
P200          1
P200          2
P200          2
P200          3
P200          5
P200          6
P200          6
P200          6
P300          4
P400          23
P500          46
P500          47
P500          48
B.articolo   B.colore
P200           1
P200           2
P200           3
P400           23
P400           24
P400           25
P500           46
Io cosa voglio? voglio una queri che mi estragga dalla tabella delgi
ordini A tutte le copie articolo-colore che non appartengono alla
categoria elencata in B.
Quindi una query che mi dia come risultato la seguente tabella:
RES.articolo   RES.colore
P200          5
P200          6
P200          6
P200          6
P300          4
P500          47
P500          48
Il problema č che non so come farla... :-(((
In pratica il risultato che cerco č tutto quello che RESTEREBBE
ESCLUSO da un JOIN tra  A e B sui campi articolo e colore:
SELECT A.articolo, A.colore
FROM A INNER JOIN B ON (A.articolo=B.articolo AND A.colore=B.colore)
questa select estrae esattamente tutto ciň che la mia query dovrebbe
NON estrarre da A.
C'č un modo per escludere delle righe dal risultato di una query?
qualcosa che faccia il contrario di quello che fa UNION?
Qualcuno mi da qualche consiglio?
Grassie.
Ciao, Max

NON estrarre da A.
C'eri quasi! Devi aggiungere un criterio su uno dei campi della tabella B
scrivendo appunto come criterio is null
In questo modo lui ti restituisce tutti i record di A che NON legano la
tabella B, che infatti "restituisce campo null"
Antonio

 categoria elencata in B.
[cut]
Si chiama query per dati non corrispondenti:
SELECT DISTINCTROW Tabella1.aaa, Tabella1.bbb, Tabella1.ccc
FROM Tabella1 LEFT JOIN Tabella2 ON Tabella1.aaa = Tabella2.azz
WHERE (((Tabella2.azz) Is Null));
Questa estrae titti i record di Tabella1 in cui il campo aaa non trova una
corrispondanza nel campo azz di Tabella2
Ciao, Sib
PS: c'era bisogno di scrivere un messaggio chilometrico con quelle
tabellone??

tabella B, che infatti "restituisce campo null"
quasi-quasi prendo a testate la parete.... :-)
sapevo che doveva esserci una soluzione semplice :-)
grassieeeeeeeeeeeeeee :-)
(ieri ero riuscito ad ottenere lo stesso risultato con una query
contorta che incorporava 2 sottoquery una delle quali rieseguita per
ogni riga.... non era il massimo dell'efficienza su tabelle do 10000
righe... :-)))))
Ciao, Max

tabellone??
sai.... ho pensato "e se poi mi spiego male e non capiscono?" :-)



SELECT A.articolo, A.colore
FROM A
WHERE NOT EXISTS (SELECT articolo
                  FROM B
                  WHERE A.articolo = B.articolo
                        AND A.colore = B.colore);
Ti conviene scriverla in modalità SQL, altrimenti naturalmente Access te
la incasina scrivendo ((((((((((EXISTS ....)))))))))) = false)
Ciao,
    Matteo

 sapevo che doveva esserci una soluzione semplice :-)
Ciao, Sib