есть такой способ
SET @var := 0;
SELECT @var := @var+1 AS num, field_name FROM `table_name`
но если подключить еще одну таблицу и добавить ORDER BY последовательность нумерации перемешивается, а необходимо пронумеровать по порядку.
SET @var := 0;
SELECT p.id,p.name,@var:=@var+1 AS num FROM products p, products_categories c WHERE 1 AND p.visible='1' AND (c.product_id=p.id AND c.category_id='18') order by p.name
Спустя 7 минут, 5 секунд (12.09.2012 - 09:16) Игорь_Vasinsky написал(а):
нумеруй в php
Спустя 8 минут, 19 секунд (12.09.2012 - 09:25) Shurick написал(а):
Да, это конечно выход, но это увеличит время работы запроса к функции.
Спустя 6 минут, 19 секунд (12.09.2012 - 09:31) Shurick написал(а):
Изменил запрос
нумерация последовательная, но увеличилось время запроса
SET @var := 0;
SELECT p.id,p.name,@var:=@var+1 AS num FROM products p WHERE 1 AND p.visible='1' AND p.id in (SELECT product_id FROM products_categories WHERE category_id='18') order by p.name
нумерация последовательная, но увеличилось время запроса
Спустя 11 минут, 13 секунд (12.09.2012 - 09:42) Placido написал(а):
Нужно просто @var:=@var+1 в селекте поставить первым. Кстати, можно и одним запросом (без SET @var := 0;)
SELECT @var:=@var+1 AS num, p.id, p.name
FROM products p, products_categories c, (select @var := 0) z
WHERE p.visible='1' AND c.product_id=p.id AND c.category_id='18' order by p.name
Спустя 5 минут, 9 секунд (12.09.2012 - 09:47) Shurick написал(а):
Цитата (Placido @ 12.09.2012 - 06:42) |
Нужно просто @var:=@var+1 в селекте поставить первым.... |
Это не помогло...
Спустя 4 часа, 2 минуты, 46 секунд (12.09.2012 - 13:50) SlavaFr написал(а):
select * , if(@var is not null,@var:=@var+1,@var:=0) as counter from ..............
тололько если речь идет о чистом sql решении.
в противном случае считаю, что лучше нумировать в php.
тололько если речь идет о чистом sql решении.
в противном случае считаю, что лучше нумировать в php.
_____________