Newsgroup: it.comp.appl.access
Titolo: Criterio query per non consentire duplicati

Esiste un criterio da inserire, nell'apposito campo della query, per far si
che non venga visualizzato un valore duplicato???
Mi spiego meglio, a me serve un report (creato dalla query in questione) con
l'elenco dei miei clienti solo che vorrei che non ci fossero nominativi
duplicati.
Spero di essermi spiegato bene (non sono molto esperto) e grazie
anticipatamente.
Giuseppe

 duplicati.
Il linguaggio SQL mette a disposizione la parola DISTINCT per filtrare i 
doppioni.
SELECT DISTINCT nome
FROM tabella
ORDER BY nome
ti estrae tutti i [nome] escludendo i doppioni.
Però se devi fare una query complessa bisogna guardarci un attimo.
Ciao
Marco 

 ha scritto nel messaggio 
news:438ca70f$0$7317$4faf...@reader4.news.tin.it...

Ciao Peppo
oltre al consiglio di napo tieni presente che anche a livelo di report
si possono nascondere duplicati......guarda nelle proprietą dei controlli.
Daniele 


Ciao Marco e grazie per il suggerimento,
ho inserito il seguente comando (nella casella criteri della Query di
Access):
(SELECT DISTINCT [Cliente] FROM [Clienti] ORDER BY [Cliente]),
ma mi da l'errore:
"la sottoquery può restituire al massimo un record"
Dove ho sbagliato?

 ha scritto nel messaggio 
news:438db8b6$0$7325$4faf...@reader4.news.tin.it...

Ciao,
ORDER BY [Clienti] ...che stai a fà? Vuoi ordinare x tabella? :-) 

 >

Pardon -> mi sà che devi rivedere la sintassi ;-) 

 "la sottoquery può restituire al massimo un record"
Nella casella criteri?
Quella che hai scritto DEVE proprio essere la query!
Altrimenti spiega un pò cosa devi fare esattamente.
Ciao
Marco 

"napo" <na...@NOPRIVATEMESSAGE.com> ha scritto nel messaggio 
news:dmkfo7$5h4$1...@news.tiscali.fr...

Scusami Marco -> ho postato di fretta e non ho letto bene...fà conto che non 
ti abbia risposto :-) 


Scusate mi spiego meglio:
ho creato una query dal nome "Query x Elenco Clienti" (tabella "Clienti")
che naturalmete mi da l'elenco di tutti i miei clienti; Partendo da questa
query ho realizzato un report che mi visualizza tutti i clienti; ora,
considerato che un cliente puň essere associato anche a piů prodotti, con
conseguente duplicazione (o triplicazione, ecc)  io vorrei che in suddetto
elenco non figurassero duplicati.
Spero di essermi fatto capire (chiedo nuovamente scusa per la mia
inesperienza).
Saluti a tutti e grazie ancora per la pazienza
Peppo

 elenco non figurassero duplicati.
Ok, meglio.
Qual'è la struttura delle tabelle interessate nella query?
Ciao
Marco 


Tabella Ricetta:
id Ricetta: Contatore (Chiave primaria)
Ricetta: Testo
lotto: testo
scadenza: data/ora
Peso netto: testo
Peso Lordo: testo
Tabella Clienti:
id Cliente: Contatore (Chiave primaria)
id ricetta: numerico
Cliente: Testo
Indirizzo Cliente: Testo
telefono: testo
Relazione:
uno a molti
tra "id Ricetta" della tabella Ricetta e "id ricetta" della tabella Clienti
Grazie ancora
Peppo

 Clienti
E tu cosa vuoi ottenere con la query?
Quello che posso immaginare è che vuoi visualizzare tutte le ricette 
suddivise per cliente.
Qualcosa del tipo:
SELECT c.*, r.*
FROM Clienti AS c, Ricetta AS r
WHERE r.idricetta=c.idricetta
ORDER BY c.Cliente, r.Ricetta
In questo caso non ha senso eliminare i duplicati, perchè stai visualizzando 
un "dettaglio".
Però, quello che puoi fare, è creare un raggruppamento su Cliente quando 
crei il report, in maniera tale da avere visualizzato una sola copia del 
nome e tutte le sue ricette.
Ora tu ottieni qualcosa del tipo:
Cliente1    Ricetta1    ecc...
Cliente1    Ricetta2    ecc...
Cliente1    Ricetta3    ecc...
Cliente2    Ricetta1    ecc...
Cliente2    Ricetta2    ecc...
Cliente3    Ricetta1    ecc...
Con il raggruppamento ottieni visivamente:
Cliente1
            Ricetta1    ecc...
            Ricetta2    ecc...
            Ricetta3    ecc...
Cliente2
            Ricetta1    ecc...
            Ricetta2    ecc...
Cliente3
            Ricetta1    ecc...
Ciao
Marco 


Scusa se approfitto della tua disponibilità,
ma il meccanismo, frutto della mia mente contorta, funziona un pò al
contrario cioè:
Ricetta 1 Cliente 1
Ricetta 1 Cliente 2
Ricetta 1 Cliente 3
Ricetta 2 Cliente 1
Ricetta 2 Cliente 2
Ricetta 3 Cliente 1
ecc. ecc.
Ora io vorrei creare un elenco dei miei clienti (completo soltanto di
indirizzo e tel - no la ricetta), su report, senza che escano duplicati
Grazie ancora
Peppo

 indirizzo e tel - no la ricetta), su report, senza che escano duplicati
Mi sto ubricando con tutti sti reply... :-)
Ma scusa, tu hai 2 tabelle.
E vuoi stampare SOLAMENTE l'elenco dei clienti??
Basta fare: SELECT * FROM Clienti
Che te ne fai delle ricette nella query?
Oppure vuoi stampare l'elenco dei clienti che hanno una ricetta?
In questo caso, fai prima a fare 2 query.
La prima è quella che hai già e che include anche le ricette.
La seconda è: SELECT DISTINCT Cliente FROM query
Oppure puoi lavorare sui join, left, right, ecc...
Ciao
Marco 

 Peppo
Credo di aver capito il tuo prob: ad occhio, hai sbagliato la
relazione: un cliente ha molte ricette, non viceversa come hai fatto
tu: hai relazionato ad una ricetta molti clienti.
Non so se è esattamente quello che vuoi, ma in questo caso ci vorrebbe
una relazione M-M, dove ad un cliente possono essere associate molte
ricette, ed inoltre ad una ricetta possono essere associati molti
clienti.
Per costruire 1 rel M-M c'è del lavoro da fare, non te lo sto a
spiegare qui che siamo OT rispetto al 3D.
Se invece la situazione è + semplice, cioè se ogni ricetta va
associata ad un solo cliente, la correzione della struttura è +
semplice, basta che togli l'idricetta dalla tab clienti, e metti un
campo idcliente sulla tab ricette, creando una relazione opposta a
quella che c'è.
In ogni caso ti consiglio caldamente di cambiare struttura prima di
lvorarci su ancora, la struttura che hai adesso è sbagliata e + ci
lavori su + ci dovrai bestemmiare.
Detto ciò, se proprio proprio vuoi farti del male e patchare la
siuazione attuale, ti spiego come fare.
Dunque tu hai 1 tab clienti che in realtà contiene + record x ogni
cliente, uno x ogni ricetta associata a lui.
Premesso che questo è un errore strutturale che nel seguito potrà
portare solo male....
Dunque, se vuoi una semplice query che ti mostri i clienti senza
ripetizioni, basta che ti fai una query che contiene solo i campi
 Cliente: Testo
Indirizzo Cliente: Testo
telefono: testo
e nelle impostazioni della query chiedi che ci siano righe distinte (o
in alternativa, vai sull'sql della query, e verifichi che dopo
"select"ci sia scritto "distinct", e nel caso lo scrivi tu.
Naturalmente non è detto che si eliminino totalmente le ripetizioni,
se per caso hai scritto il nome, l'indirizzo od il tel con una grafia
diversa (che so, una volta con ed una senza prefisso) quella ti viene
proposta 2 volte.
hope it help....

Grazie infinite per l'aiuto,
lo so che il progetto č un pņ Machiavellico, ma č frutto della mia mente
malata ed inesperta, comunque grazie ai vostri consigli sono riuscito a
risolvere il problema (non sapevo che cliccando col tasto destro del mouse
si accedesse alla visualizzazione SQL... pensate che ignorante!!!).
Grazie ancora ed alla prossima
Peppo
PS:
per la cronaca sono entrato nella visualizzazione SQL ed ho verificato che
dopo "select" ci fosse scritto "distinct"