Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день! Помогите пожалуйста с запросом. Искала ответ, но не нашла, видимо использую неправильную терминологию.
Нужно в одной таблице выбрать все записи по одному полю (parent), и в этих записях в поле sort записать значения от 1 до n (n - количество записей в выборке). Как выбрать записи знаю, как просто присвоить значение тоже знаю. Не получается сделать так, чтобы эти значения возрастали.
Исходная таблица:
id title descr parent sort
1 CISA 56785 замок врезной под тяги... 1
7 CISA 56786 замок врезной под тяги... 1
3 CISA 57785 замок врезной под тяги... 1
11 CISA 57786 замок врезной под тяги... 1
9 CISA 57985 замок врезной с защелкой... 2
Выходная таблица (запрос только для выборки, где parent=1):
id title descr parent sort
1 CISA 56785 замок врезной под тяги... 1 1
7 CISA 56786 замок врезной под тяги... 1 2
3 CISA 57785 замок врезной под тяги... 1 3
11 CISA 57786 замок врезной под тяги... 1 4
9 CISA 57985 замок врезной с защелкой... 2
Заранее спасибо!
Неактивен
Неактивен
vasya, большое вам спасибо, все получилось!
По моей вине результат не совсем такой, как хотелось бы - после выборки надо было отсортировать по id, а потом уже присваивать значения в столбце sort.
Подскажите пожалуйста, в какое место в запросе вставить ORDER BY id ASC?
Большое вам спасибо!
Неактивен
Если я правильно понял, то
Неактивен
vasya,
после того, как установили начальное значение переменной i=0, делаем выборку (WHERE parent=32), после этого в пределах выборки нужно отсортировать записи по id по возрастанию. И далее этим записям в поле sort присваиваем значения 1..n.
Пишу запрос:
UPDATE `catalog`, (SELECT @i:=0) x SET sort=@i:=@i+1 WHERE parent=32 ORDER BY id;
SQL ругается:
#1221 - Incorrect usage of UPDATE and ORDER BY
Неактивен
Точно, order by только однотабличного update, тогда
Неактивен