Newsgroup: it.comp.lang.visual-basic
Titolo: [OT]: proposizione SELECT predicato DISTINCT

Ciao a tutti, volevo sapere una cosa:
io ho una tabella Clienti con i seguenti campi:
1) Nome
2) Cognome
3) Indirizzo
4) Città
5) ZIP
6) Nazione
è possibile fare una SELECT di tutti i campi della tabella,
eseguendo la DISTINCT sui campi Nome e Cognome?
(quindi su più campi)
Per esempio, io vorrei che il signor Mario Rossi che abita
in Cina corrispondesse al signor Mario Rossi che abita in Brasile, e la
select mi dovrebbe restiuire uno solo dei due!
E' un po' strano ma mi serve questo tipo di query!!!
Ricordate che mi servono tutti i campi restituiti nella SELECT!!!
Ciao e grazie a tutti!

 writes:
f> Ciao a tutti, volevo sapere una cosa:
f> io ho una tabella Clienti con i seguenti campi:
f> 1) Nome
f> 2) Cognome
f> 3) Indirizzo
f> 4) Città
f> 5) ZIP
f> 6) Nazione
f> è possibile fare una SELECT di tutti i campi della tabella,
f> eseguendo la DISTINCT sui campi Nome e Cognome?
f> (quindi su più campi)
Non con la select distinct in quanto 
('Mario', 'Rossi', 'Indirizzo', 'Città', 'Zip', 'Cina')
('Mario', 'Rossi', 'Indirizzo', 'Città', 'Zip', 'Brasile') 
('Indirizzo',  'Città'  e 'Zip'  sono  incredibilmente  gli stessi  in
Brasile e  Cina :) )  sono due t-uple  distinte e mi pare  proprio che
distinct si applichi a tutta la t-upla estratta.
--
Gian Uberto| main(){printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);}
Lauri      |                        David Korn, 1987 ioccc best one liner 
(aka saint)|-------------------------------------------------------------------
em@ail: 
sa...@eng.it
 ( vedere X-nospam nello header - see X-nospam in header )

Esatto, e qui casca l'asino! Come devo fare per estrapolare questi dati con
una query soltanto?
Devo rassegnarmi ad utilizzare più di una query?
Posso usare il predicato TOP?
Che alternative ho???
[CUT]


Ho risolto anche in quest'altro modo, dimmi se è una cavolata o può andare
bene:
ho creato un campo Alias:
SELECT DISTINCT (Nome + Cognome) AS Codifica, Nome, Cognome, Indirizzo
etc... etc....


C'e' qualcosa che non quadra... Ma non nella select, in quello che hai
detto!
Come caspita fa il signor mario rossi del brasile a corrispondere al signor
mario rossi in cina SE devi anche *sapere* che uno abita in cina e l'altro
in brasile??????? (l'hai detto tu che ti servono tutti i campi)
Se ti serve quel dato, ti servono due record, mi pare evidente... Non e' un
problema di distinct, e' un problema di avere due dati DIVERSI che tu vuoi
UNIRE ma avendo ANCHE il dato non comune.
O il dato non ti serve, o se ti serve ti servono tutti e due i record, per
forza di cose.
Ciaotutti,
*.perplesso

 ha scritto nel messaggio
news:9r3h06$64p$1...@fe2.cs.interbusiness.it...


 aver provato a scrivere una dozzina di query malfunzionanti.
[...]
Basta usare Group By
In access è semplicissimo perchè ha le funzioni  sul dominio last e first,
in Sql server, oracle et similia è un po' più complicato:
1) se i campi sono tutti uguali tranne 1 solo ordinato allora usa max:
    SELECT Campo1, campo2, MAX(campoordinato) As valoremassimo FROM
tuatabella GROUP BY campo1, campo2
2) se la cosa si fa + complessa devi usare unq query con subquery:
   SELECT IDTabella, campi che vogliovisualizzare FROM TABELLA where
IdTabella = (SELECT MAX(Campoordinato) FROM TABELLA c WHERE  IdTabella =
c.IDTabella)
Con l'Sql si può fare tutto!!!
hth
Alfonso