sql решение

6 отговора 320 прегледа
#1

sql решение

Сигурно е много лесно , но аз нещо изтъпях.
Имам една инпут таблица в която има поле ID/PK/, описание, категории/FK/, дата.
Различните записи са в 5 категории и се вкарват произволно.
Искам с една заявка да получа най-новите записи в петте категории, само 5 записа.

Със select max(datata), category
from tableN
group by category

получавам категориита и датата и не се сещам как да получа и описанието, а ги имам редовете... с group by category, descr няма да получа distinct категории.
Подзаявката пък не ми позволява агрегатна с експрешън.
Зациглил съм...
Help please

Отговор
в отговор на user@ #2

Re: sql решение

ако ти трябват само 5 записа, защо не го направиш с
select top 5 ...
?
тогава няма дa ти трябва и group by
или ти искаш нещо друго ?

Отговор
в отговор на stone #3

Re: sql решение

Ами не ми трябват топ 5, записите се вкарват произволно в различни категории, искам в заявката да ми се подредят:

категории дата описание
1 днес ...........
2 днес ..........
3 вчера
4 вчера
5 онзиден

с group by го правя само че без описание

Отговор
в отговор на user@ #4

Re: sql решение

Това нещо не е проблем да се направи с две заявки ,но това е за сметка на сканиране на data pages в SQL server, а аз искам да си използвам индексите за по голяма производителност, още повече той веднъж е открил правилните редове с group by заявката ...а да се налага пак да ги претърсва... кощунство...

Отговор
в отговор на user@ #5

?

na kakuv SQL tfa?

bofh
Отговор
в отговор на user@ #6

Re: sql решение ???

... having date = max(date)?

Това Oracle ли е що ли?

select t1.cat, t1.descr from tbl as t1, (select cat, max(date) as maxdate from tbl group by cat) as t2 where t1.cat = t2.cat and t1.date = t2.maxdate;
Това дали няма да проработи?

Linux is like a wigwam - No Windows, No Gates, Apache inside

Редактирано от salle на

Отговор
в отговор на salle #7

Re: sql решение ???

Работи разбира се :)
Благодаря ти много.

Това е SQL server 2000- по добър и от Oracle :)

Ta като му се забих в оптимизационните планове, всеки път бърках заявката която ти сега ми предложи и е естественото решение.
Иначе бях го направил с едно view в което си получавам редовето и после join с таблицата по дата или категория няма нужда даже от and

Пак 10x

Отговор