Newsgroup: it.comp.appl.access
Titolo: Che criterio impostare in questa query?

Ciao a tutti,
mi scuso per l'oggetto forse troppo generico ma non mi viene in mente
altro.
Data una tabella Nomi_Prodotti
Nome.....Prodotto
Tizio.............pane
Tizio ............latte
Tizio.............carne
Caio..............pane
Caio..............frutta
Sempronio....carne
Sempronio....pesce
Sempronio....frutta
Melvio..........latte
vorrei fare una query per estrarre dalla suddetta tabella i nomi di chi ha
almeno uno dei prodotti tra pane, latte e frutta, ma che allo stesso tempo
non abbia di sicuro nemmeno uno degli altri prodotti.
Quindi nel caso di questo esempio dovrei ottenere solo i nomi di Caio e
Melvio.
Meglio ancora sarebbe potere effettuare la selezione dei prodotti da una
list box
Grazie anticipatamente  a chiunque mi vorrà essere di aiuto

 Ciao Markos
se io scrivo:
SELECT DISTINCT [Nomi_Prodotti].Nome, [Nomi_Prodotti].Prodotto
FROM [Nomi_Prodotti]
WHERE ((([Nomi_Prodotti].Prodotto)="pane" Or 
([Nomi_Prodotti].Prodotto)="latte" Or[Nomi_Prodotti].Prodotto)="frutta"));
ottengo:
Tizio.............pane
Tizio ............latte
Caio..............pane
Caio..............frutta
Sempronio....frutta
Melvio..........latte
ottengo cioè anche il nome di Tizio che non ha solo pane e latte ma ha anche 
carne e quindi non va bene, Sempronio che oltre alla frutta ha anche carne e 
pesce e non va bene.
Io vorrei ottenere solo il nome di Caio e Melvio che invece hanno almeno uno 
tra pane, latte e frutta ma che allo stesso tempo non hanno ne carne ne 
pesce.
Qualche altro suggerimento?
Grazie, ciao

 ha scritto nel messaggio
news:4387a2e3$0$8490$5fc...@news.tiscali.it...

Ciao cranze,
cerchi tutti i nomi che Non hanno i prodotti richiesti e poi li Escludi
dalla selezione
esempio
----
SELECT Distinct Nome
FROM   Nomi_Prodotti
WHERE  NOT Nome IN
      (SELECT Nome
       FROM   Nomi_Prodotti
       WHERE  NOT Prodotto IN ('Pane','Latte','Frutta')
       )
----
Ciao
-- 
Giorgio Rancati
[Office Access MVP]


Ok Giorgio, cosě funziona.
Ma se non chiedo troppo vorrei selezionare l'elenco dei prodotti da una list 
box oppure semplicemente da una casella di testo non associata in cui 
scrivere i prodotti da selezionare separati da una virgola p.e.: 
pane,latte,frutta. ma ovviamente se nella query scrivo:
..........FROM   Nomi_Prodotti
          WHERE  NOT Prodotto IN ([Forms]![MiaMaschera]![Testo1])
dove in Testo1 scrivo appunto: pane,latte,frutta
non trova nessun dato.
Come potrei fare?
Grazie ancora, cranze

 Come potrei fare?
Ciao cranze,
o componi la stringa SQL da vba e poi la assegni come origine record
dell'oggetto desiderato
----
strSql="Select ......... " & _
     "WHERE  NOT Prodotto IN (" & Me.[Testo1] & ")" & _
"ecc ecc"
----
in testo1 dovrai mettere 'Pane','Latte','Frutta'
oppure aggiungi un campo (Selezionato) di tipo Sě/No alla tabella prodotti
che andrai a compilare tramite una sottomaschera.
Fatto questo potrai scrivere la query in questo modo
----
SELECT Distinct Nome
FROM   Nomi_Prodotti
WHERE  NOT Nome IN
      (SELECT Nome
       FROM   Nomi_Prodotti
       WHERE  NOT Prodotto IN (SELECT Prodotto FROM Prodotti WHERE
Selezionato=True)


list box
Quali prodotti vorresti selezionare?
Quelli da includere univocamente (pane, latte, frutta)
o quelli da escludere (carne, pesce)?
Bruno

 Bruno
Con la precedente definivi le esclusioni (carne e pesce),
con questa definisci le inclusioni (pane, latte, frutta):
SELECT Table2.Nome FROM Table2
GROUP BY Table2.Nome
HAVING (((Table2.Nome) Not In (SELECT Table2.Nome
FROM Table2
WHERE ((Not ((Table2.Prodotto)="pane" Or (Table2.Prodotto)="frutta"
Or (Table2.Prodotto)="latte"))) GROUP BY Table2.Nome;)));
Bruno