Помогите сделать оптимальный запрос к БД 3.23.xx

Sirius

PHP+MySQL=LOVE
Помогите сделать оптимальный запрос к БД 3.23.xx

БД 3.23.xx

Таблица

ИД Категория_товара Актуальность Дата ...
1 2 1 2004-11-10 ...
2 3 1 2004-11-11 ...
3 1 0 2004-11-10 ...
4 2 1 2004-11-11 ...
5 1 1 2004-11-10 ...
...
N 1 0 2004-11-10 ...

Нужно выбрать последние N товаров по каждой категории, которые являются актуальными:

Типа запрос:
SELECT * FROM table WHERE actual = '1' order by rdate DESC limit NUM

Только для каждой категории товаров - хочу обойтись одним, или максимум двумя запросами...

Заранее спасибо за помощь! :)

-~{}~ 14.11.04 03:14:

Ок - если это так трудно :)

1. Можно ли лимитировать запрос в выборке, например 10 результатов по каждому из признаков?
2. Можно ли подсчитать общее количество результатов вместе с самим запросом в котором присутссвует лимит?например:
select *, count(*) as total from table where bla = 1 limit 10
 

Апельсин

Оранжевое создание
> Можно ли лимитировать запрос в выборке, например 10 результатов по каждому из признаков?

нет

> Можно ли подсчитать общее количество результатов вместе с самим запросом в котором присутссвует лимит?

можно. смотреть в сторону FOUND_ROWS().

Насчет твоего запроса, в 3.23 ты это одним запросом не сделаешь.
С 4.0 смотри в сторону UNION
(select .. limit 10) UNION (select ... limit 10 ) UNION .... UNION (select ... limit 10)
 

Sirius

PHP+MySQL=LOVE
СПАСИБО!
Мдя уж... Я так и думал, что всё так плохо...

А FOUND_ROWS в 4.0.0 только появилась :(

Ещё вопросик - как Вы обычно делаете проверки на версию и в зависимости от этого запрос? Через mysql_get_server_info() или в самом запросе?
 
Сверху