пятница, 16 октября 2009 г.

Пронумеровываем строки в запросе (часть 2)

Как я писал в прошлой статье "Пронумеровываем строки в запросе", я подумал, а что если необходимо получить результат одной строки.
- Зачем?
Ну к примеру мы хотим узнать позицию товара по рейтингу (рейтинг - например показатель популярности товара по количеству просмотров или голосов).
Как оказалось это не так уже и сложно, приведу ниже код.

SELECT `ПОЗИЦИИ`
FROM (SELECT @n := @n +1 AS `ПОЗИЦИИ` , `ПРОСМОТРЫ` , `ИД_ТОВАРА`
FROM `ТАБЛИЦА` , (SELECT @n :=0) AS z
ORDER BY `ПРОСМОТРЫ` DESC) AS x
WHERE `ИД_ТОВАРА` = '1'

(*) - SELECT @n := @n +1 AS `ПОЗИЦИИ` , `ПРОСМОТРЫ` , `ИД_ТОВАРА`
FROM `ТАБЛИЦА` , (SELECT @n :=0) AS z
ORDER BY `ПРОСМОТРЫ` DESC
// Получаем общий результат всего товара с позициями и рейтингом.

SELECT `ПОЗИЦИИ` FROM (*) AS x WHERE `ИД_ТОВАРА` = '1'
// В следущем коде мы сужаем полученый результат (*) до одной нужной позиции с помощью WHERE `ИД_ТОВАРА` = '1'.

Комментариев нет:

Отправить комментарий

Ридеры