|
|
|
выборка по N последних товаров каждой категории...
|
|||
|---|---|---|---|
|
#18+
Есть таблица, скажем, товаров. Как выбрать, к примеру, по 4 товара каждой категории одним запросом, ещё и отсортированых по последним ID? Я пока такого в теории не находил. Вопрос больше алгоритмический... Думаю поиграться надо с переменными. ЗЫ: возможно выйдёт двумя запросами. Просто не хочется делать запрос на каждую категорию. А запрос этот актуален и для новостных сайтов и для форумов... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2004, 10:49 |
|
||
|
выборка по N последних товаров каждой категории...
|
|||
|---|---|---|---|
|
#18+
А вообще вопрос очень интересный... Надо немного подумать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2004, 14:37 |
|
||
|
выборка по N последних товаров каждой категории...
|
|||
|---|---|---|---|
|
#18+
Скорее всего, всё-таки придётся ручками перебирать полученный набор строк... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2004, 14:41 |
|
||
|
выборка по N последних товаров каждой категории...
|
|||
|---|---|---|---|
|
#18+
хранить идентификаторы на новинки в отдельной таблице. Добавлять в нее новый идентификатор при добавлении новости и удалять при этом самый старый из этой категории. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2004, 15:07 |
|
||
|
выборка по N последних товаров каждой категории...
|
|||
|---|---|---|---|
|
#18+
Можно нагородить в 5 этажей подзапросов по принципу Выбрать max(id), где id < Выбрать max(id), где id < Выбрать max(id)... Короче, в самом низу должен быть максимальный id из таблицы, чуть выше - максимальный id, который меньше максимума и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2004, 21:21 |
|
||
|
выборка по N последних товаров каждой категории...
|
|||
|---|---|---|---|
|
#18+
Возвращаясь к проблеме - вот чего удалось добиться 2-мя запросами. Код: plaintext Код: plaintext nid ncat cnt 450613 28 1 450618 28 2 450617 28 3 450614 27 1 450616 28 4 450615 2 1 450631 28 5 450630 28 6 450619 28 7 450629 28 8 Вопрос как отфильтровать хитро полученые записи - WHERE cnt<=4 - не проходит, переменные считаются после выборки записей. HAVING cnt <=4 - не проходит, in the HAVING, GROUP BY, or ORDER BY clause, you can't refer to an expression that involves variables that are set in the SELECT part. и хочется, и колется... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2004, 19:09 |
|
||
|
выборка по N последних товаров каждой категории...
|
|||
|---|---|---|---|
|
#18+
Эврика!!! Код: plaintext 1. 2. Решил, но... Время выполнения запроса - порядка 0,3-0,5 сек. Если заменить это на 20 запросов, использующих индексы - 20*(0,0005) сек. ПРОИГРЫВАЕМ В СКОРОСТИ НА ПОРЯДОК! Зато в красоте выиграш. Что думаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2004, 19:23 |
|
||
|
выборка по N последних товаров каждой категории...
|
|||
|---|---|---|---|
|
#18+
Вот и у меня похожий вопрос http://www.sql.ru/forum/actualthread.aspx?tid=139052 Но если в скорости на порядок, сделаю несколько запросов тогда... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 19:29 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=672&tid=1854611]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
44ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 337ms |

| 0 / 0 |
