sql решение
6 отговора
320 прегледа
sql решение
Сигурно е много лесно , но аз нещо изтъпях.
Имам една инпут таблица в която има поле ID/PK/, описание, категории/FK/, дата.
Различните записи са в 5 категории и се вкарват произволно.
Искам с една заявка да получа най-новите записи в петте категории, само 5 записа.
Със select max(datata), category
from tableN
group by category
получавам категориита и датата и не се сещам как да получа и описанието, а ги имам редовете... с group by category, descr няма да получа distinct категории.
Подзаявката пък не ми позволява агрегатна с експрешън.
Зациглил съм...
Help please
Имам една инпут таблица в която има поле ID/PK/, описание, категории/FK/, дата.
Различните записи са в 5 категории и се вкарват произволно.
Искам с една заявка да получа най-новите записи в петте категории, само 5 записа.
Със select max(datata), category
from tableN
group by category
получавам категориита и датата и не се сещам как да получа и описанието, а ги имам редовете... с group by category, descr няма да получа distinct категории.
Подзаявката пък не ми позволява агрегатна с експрешън.
Зациглил съм...
Help please
Re: sql решение
ако ти трябват само 5 записа, защо не го направиш с
select top 5 ...
?
тогава няма дa ти трябва и group by
или ти искаш нещо друго ?
select top 5 ...
?
тогава няма дa ти трябва и group by
или ти искаш нещо друго ?
Re: sql решение
Ами не ми трябват топ 5, записите се вкарват произволно в различни категории, искам в заявката да ми се подредят:
категории дата описание
1 днес ...........
2 днес ..........
3 вчера
4 вчера
5 онзиден
с group by го правя само че без описание
категории дата описание
1 днес ...........
2 днес ..........
3 вчера
4 вчера
5 онзиден
с group by го правя само че без описание
Re: sql решение
Това нещо не е проблем да се направи с две заявки ,но това е за сметка на сканиране на data pages в SQL server, а аз искам да си използвам индексите за по голяма производителност, още повече той веднъж е открил правилните редове с group by заявката ...а да се налага пак да ги претърсва... кощунство...
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
Това 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 на
Re: sql решение ???
Работи разбира се :)
Благодаря ти много.
Това е SQL server 2000- по добър и от Oracle :)
Ta като му се забих в оптимизационните планове, всеки път бърках заявката която ти сега ми предложи и е естественото решение.
Иначе бях го направил с едно view в което си получавам редовето и после join с таблицата по дата или категория няма нужда даже от and
Пак 10x
Благодаря ти много.
Това е SQL server 2000- по добър и от Oracle :)
Ta като му се забих в оптимизационните планове, всеки път бърках заявката която ти сега ми предложи и е естественото решение.
Иначе бях го направил с едно view в което си получавам редовето и после join с таблицата по дата или категория няма нужда даже от and
Пак 10x