Newsgroup: it.comp.software.database
Titolo: select DISTINCT in mysql

devo fare una query dove mi ritorna l'elenco dei records con una sola voce
tabella arc1
id_key
datalet
ecc...
tabella regcl
id_key
codice
SELECT DISTINCT * FROM Arc1 Arc1 , regcl Regcl WHERE  (Arc1.id_key =
Regcl.id_key) ORDER BY Arc1.datalet DESC
ecco il risultato
id_key      datalet  codice
1    10/01/2004    50
2    11/01/2004    70
2    11/01/2004    80
cosi' non mi va' bene dovrebbe essere
id_key      datalet  codice
1    10/01/2004    50
2    11/01/2004    70
dovrebbe darmi il primo dei record con id_key ripetuti
che mi puo' dare una mano ?
grazie anticipatamente


Ciao Massimo,
prova con questa query:
SELECT DISTINCT A.id_key, A.datalet. R.codice
FROM Arc1 AS A , regcl AS R
WHERE A.id_key = R.id_key
ORDER BY A.datalet DESC
Ciao!
David

 ha scritto nel messaggio
news:c75c5h$idp4f$1...@ID-218618.news.uni-berlin.de...


 campi che mi servono stranamente mi fa' vedere anche i record ripetuti ?
Ciao Massimo,
senza avere i dati presenti nelle tabelle e le loro strutture, io ho un 
po' tirato ad indovinare. La mia query non funziona perché non conosco i 
dati che hai, perché con alcuni dati di prova che ho usato, è tutto ok.
Anziché usare la clausola DISTINCT, non puoi fare un GROUP BY sul campo 
Arc1_1.Id_key?
SELECT A.id_key, A.datalet, MAX(R.codice)
FROM Arc1 AS A , regcl AS R
WHERE A.id_key = R.id_key
GROUP BY A.id_key, A.datalet
ORDER BY A.datalet DESC
In pratica raggruppo il result set della query in base al campo 
"A.id_key" (e anche "A.datalet", altrimenti mi viene restituito un 
errore). Per quanto riguarda il campo R.codice, ho ipotizzato che sia un 
numero, e qualora avessi sullo stesso "A.id_key" due valori di 
"R.codice", prendo il valore massimo (solo a titolo di esempio).
Fammi sapere se stavolta ho centrato il problema.
Ciao!
David

ti posto il tracciato delle tabella ... relazione tra arc1 -> regcl uno a
molti campo Id_Key e il tutto deve essere ordinato per arc1.datalet...
naturalmente in Mysql
un record per ogni relazione
i campi da visualizzare sono
tabella arc1
id_key
datalet
tipolet
subtipolet
oggetto
tabella regcl
gruppo
voce
subvoce
grazie per l'interessamento
.-.-.-.-.-.-.-.-.-.-
CREATE TABLE `arc1` (
`utente` varchar(20) default NULL,
`Id_key` int(10) NOT NULL auto_increment,
`tipo_prot` varchar(6) default NULL,
`tipo` char(1) default NULL,
`numprot` int(8) default NULL,
`anno_prot` int(4) default NULL,
`dataarc` date default NULL,
`datalet` date default NULL,
`nomin` varchar(35) default NULL,
`citta` varchar(20) default NULL,
`tipolet` varchar(6) default NULL,
`subtipolet` varchar(6) default NULL,
`riflet` varchar(12) default NULL,
`subriflet` varchar(12) default NULL,
`oggetto` text,
`testo` text,
`nb` text,
`letdoc` text,
PRIMARY KEY (`Id_key`),
KEY `key_prot` (`anno_prot`,`numprot`)
) TYPE=MyISAM;
CREATE TABLE `regcl` (
`Id` int(10) unsigned NOT NULL auto_increment,
`id_key` int(10) NOT NULL default '0',
`tipo` char(1) default NULL,
`numprot` int(8) NOT NULL default '0',
`anno` int(4) NOT NULL default '0',
`gruppo` int(3) default NULL,
`voce` int(3) default NULL,
`subvoce` int(3) default NULL,
`tipoclas` int(1) default NULL,
`letarc` text,
`nb` text,
PRIMARY KEY (`Id`),
UNIQUE KEY `keyall` (`id_key`,`gruppo`,`voce`,`subvoce`),
KEY `id_key` (`id_key`)
) TYPE=MyISAM;

 
[CUT]
Ciao Massimo,
io uso SQL Server 2000 e da me funziona, anche con la prima query che 
hai postato... non ho MySQL e quindi non saprei come aiutarti.
Buona fortuna ;-)
Ciao!
David