|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jan 2002
Messaggi: 437
|
[SQL] lista senza ripetizione di un valore
Non sapevo bene che titolo dare al thread ma vi espongo brevemente il problema. Ho una query di per se semplice (questo è un esempio per evitare di spiegarvi eccessivamente lo schema che sto usando):
Codice:
SELECT name, surname, age FROM PERSON ORDER BY age DESC LIMIT 3 Io vorrei però escludere da questi 3 le persone con lo stesso cognome, ovvero se due persone hanno lo stesso cognome non possono stare entrambe nella stessa lista. Ad esempio nel DB: Mario, Rossi, 45 Paolo, Verdi, 40 Marco, Bianchi, 15 Paolo, Rossi, 42 Attualmente la query restituisce: Mario, Rossi, 45 Paolo, Rossi, 42 Paolo, Verdi, 40 Mentre io vorrei che Paolo Rossi fosse escluso perchè in lista c'è già un Rossi e dunque che la query restituisse: Mario, Rossi, 45 Paolo, Verdi, 40 Marco, Bianchi, 15 Cosa mi suggerite? |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2005
Città: Resana - TV
Messaggi: 960
|
Codice:
SELECT DISTINCT .... |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jan 2002
Messaggi: 437
|
No, non basta la distinct nel mio caso.
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Sep 2007
Messaggi: 754
|
GROUP BY NAME?
__________________
http://www.tevigroup.it/ |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Apr 2005
Città: Resana - TV
Messaggi: 960
|
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jan 2002
Messaggi: 437
|
grazie, va benissimo il goup by surname.
Ne approfitto per approfondire: se invece volessi estendere questa caratteristica a due colonne invece che ad una? Proseguendo l'esempio di prima: Mario, Rossi, 45 c'è perchè è il più vecchio e in lista non ci sono altri Mario, nè altri Rossi Paolo, Rossi, 42 no, perchè c'è già un'altro Rossi Paolo, Verdi, 40 si perchè non c'è nessun Paolo e neanche un Verdi Paolo, Rossi, 39 no perchè in lista c'è già un Paolo |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Sep 2007
Messaggi: 754
|
group by name,surname
__________________
http://www.tevigroup.it/ |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Jan 2002
Messaggi: 437
|
ma così mi elimina quelli che hanno lo stesso nome AND lo stesso cognome: io vorrei stesso nome OR stesso cognome!
|
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
guarda che
Codice:
SELECT name, surname, age Codice:
GROUP BY surname ![]() nella GROUP BY ci devono essere tutti i campi non gia´ raggruppati da funzioni (MAX, MIN, etc) selezionati
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Jan 2002
Messaggi: 437
|
in effetti negli appunti di SQL non avevo individuato il group by come costrutto utile...Fatto sta che pare funzionare...
Tu cosa suggerisci? |
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
non so, non mi sembra facile senza cursore. Ma devo dire che non tocco Oracle da Marzo. Secondo me pero´ o usi un cursore o qualche query nidificata.
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Jan 2002
Messaggi: 437
|
vi faccio anche presente che sono vincolato a SQLite
|
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Feb 2002
Città: Trento
Messaggi: 962
|
Prova qualcosa del tipo:
Codice:
SELECT name, surname, maxage AS MAX(age) FROM PERSON GROUP BY name, surname ORDER BY maxage DESC ![]()
__________________
"Et Eärallo Endorenna utúlien. Sinome maruvan ar Hildinyar tenn' Ambar-metta!" -- Aragorn Elessar, Heir of Isildur Mixmar -- OpenSuSE 11.1 on AMD 64 3000+ on DFI LanParty nF4-D | GeForce 6600 GT + Thermaltake Schooner on Samsung 710N Storage -- ( 2 x Hitachi Deskstar 80 Gb + 1 x Hitachi 250 Gb ) = 1 RAID 5 + 1 Storage space LaCie Ethernet Disk Mini 250 Gb | HP - DV2150 EL MILAN CLAN Ultima modifica di Mixmar : 11-10-2007 alle 20:07. Motivo: Aggiunta |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:16.