PDA

Visualizza la versione completa : [SQL] Problema con DISTINCT e ORDER BY


Melly
21-10-2005, 10:10
Buongiorno a tutti. :D

date le tabelle

bollettino con campi
desc-bol
id-lis

listabollettini con campi
id-lis
dtcre-lis

e precisato che per ogni lista ci sono più bollettini con la stessa descrizione dovrei:

estrarre le ultime 15 descrizioni dell'anno in corso. Aiutoooo!!!

io ho prodotto questa select




Select distinct top 15 bollettino.[desc-bol]
from bollettino
where bollettino.[iden-cre]=2
and bollettino.[iden-lis] in
(
Select [iden-lis] from listabollettini where
year([dtcre-lis])=2005 and [iden-cre]=2
order by [dtcre-lis] desc
)


ovviamente se aggiungo l'order by alla fine mi va in conflitto con il distinct.

il risultato è giusto ma me la ordina alfabeticamente secondo la descrizione e non secondo la data di craezione.

qualcuna sa aiutarmi? :messner:

Melly
21-10-2005, 10:44
ho trovato anche questa soluzione



select distinct [desc-bol] from bollettino
where [iden-cre]=2 and [iden-lis] in

(select top 15 [iden-lis]
from listabollettini
where [iden-cre]=2 and year([dtcre-lis])=2005
order by [dtcre-lis] desc)


l'unico problema è che se inserisco 15 liste con la stessa descrizione mi tirerà fuori un solo record

aiuto!!!! :cry:

lufo5
21-10-2005, 11:26
Select distinct top 15 bollettino.[desc-bol]
from bollettino
INNER JOIN listabollettini ON bollettino.[iden-lis] = listabollettini.[iden-lis]
where bollettino.[iden-cre]=2
and year(listabollettini.[dtcre-lis])=2005
and listabollettini.[iden-cre]=2
order by listabollettini.[dtcre-lis] desc

Melly
21-10-2005, 11:49
io ho risolto giusto 2 secondi fa in questo modo :D

select top 15 bollettino.[desc-bol],
max(listabollettini.[dtcre-lis])
from bollettino, listabollettini
where bollettino.[iden-cre]=2
and listabollettini.[iden-lis]=bollettino.[iden-lis]
and year(listabollettini.[dtcre-lis])=2005
group by [desc-bol]
order by max(listabollettini.[dtcre-lis]) desc



che dici va bene lo stesso ? :D

Melly
21-10-2005, 11:51
Originariamente inviato da lufo5


Select distinct top 15 bollettino.[desc-bol]
from bollettino
INNER JOIN
listabollettini ON bollettino.[iden-lis] = listabollettini.[iden-lis]
where bollettino.[iden-cre]=2
and year(listabollettini.[dtcre-lis])=2005
and listabollettini.[iden-cre]=2
order by listabollettini.[dtcre-lis] desc



Qui l'order by va in conflitto con distinct :nonono:

cmq grazie lo stesso :smack:

lufo5
21-10-2005, 12:05
Originariamente inviato da Melly
Qui l'order by va in conflitto con distinct :nonono:

cmq grazie lo stesso :smack: e allora non fare il distinct ma fai un group by.

lufo5
21-10-2005, 12:14
Originariamente inviato da Melly
io ho risolto giusto 2 secondi fa in questo modo :D

select top 15 bollettino.[desc-bol],
max(listabollettini.[dtcre-lis])
from bollettino, listabollettini
where bollettino.[iden-cre]=2
and listabollettini.[iden-lis]=bollettino.[iden-lis]
and year(listabollettini.[dtcre-lis])=2005
group by [desc-bol]
order by max(listabollettini.[dtcre-lis]) desc



che dici va bene lo stesso ? :D
se a te va bene... direi di si. :D

Melly
21-10-2005, 12:44
grazie :yuppi:

Loading