Страница 1 из 1
Запрос UPDATE как реализовать?
Добавлено: 2017.11.29, 01:04
MaxKyivUA
Представим, что есть задача поменять 2 поля местами со 2го на 1е и наоборот.
Вот мы выбираем текущую позицию
Код: Выделить всё
SELECT pos FROM system_page WHERE id_position = 3 LIMIT 1
и нам вернуло 2. Потом выбираем пред идущую
Код: Выделить всё
SELECT pos FROM system_page WHERE pos < 2 ORDER BY pos DESC LIMIT 1
соответственно нам пришло 1.
С этим у меня проблем нет не каких
А далее надо сделать запрос на UPDATE такого вида:
Код: Выделить всё
UPDATE system_page SET pos = 2 + 1 - pos WHERE pos IN (2, 1)
Вот у меня вопрос: "Как его сделать? Какой для этого есть класс/метод?"
Спасибо.
Re: Запрос UPDATE как реализовать?
Добавлено: 2017.11.29, 01:21
caHek2x
MaxKyivUA писал(а): ↑2017.11.29, 01:04
Представим, что есть задача поменять 2 поля местами со 2го на 1е и наоборот.
выберите еще и id первого и второго ... а потом запрос:
UPDATE system_page SET pos = pos + 1 WHERE id = 1
UPDATE system_page SET pos = pos - 1 WHERE id = 2
только причем тут yii2 ? вы с моделями работаете ? или с чистыми запросами ?
MaxKyivUA писал(а): ↑2017.11.29, 01:04
Представим, что есть задача поменять 2 поля местами со 2го на 1е и наоборот.
Код: Выделить всё
UPDATE system_page SET pos = 2 + 1 - pos WHERE pos IN (2, 1)
3 - pos это что ? так как я у вас задача ? поменять местами или 3 - pos ?
Re: Запрос UPDATE как реализовать?
Добавлено: 2017.11.29, 01:23
Dominus
Если речь идет о позициях, то существуют готовые решения, например это:
https://github.com/yii2tech/ar-position
Re: Запрос UPDATE как реализовать?
Добавлено: 2017.11.29, 13:49
MaxKyivUA
За решение большое спасибо, сейчас читаю как им пользоваться. Судя из того, что пишет автор это именно то, что мне надо
Сейчас установлю посмотрю на действие и обязательно напишу о результате.
Re: Запрос UPDATE как реализовать?
Добавлено: 2017.11.29, 13:57
MaxKyivUA
caHek2x писал(а): ↑2017.11.29, 01:21
выберите еще и id первого и второго ... а потом запрос:
UPDATE system_page SET pos = pos + 1 WHERE id = 1
UPDATE system_page SET pos = pos - 1 WHERE id = 2
Вы не внимательно читали или я не особо понятно написал. Там явно видно, что Ид присутствует.
caHek2x писал(а): ↑2017.11.29, 01:21
только причем тут yii2 ? вы с моделями работаете ? или с чистыми запросами ?
Как это причём, вопрос заключался в том как выполнить на Yii2 UPDATE команда такая в SQL , пускай будет " чистыми запросами "
caHek2x писал(а): ↑2017.11.29, 01:21
3 - pos это что ? так как я у вас задача ? поменять местами или 3 - pos ?
Да поменять местами, и эта
Код: Выделить всё
UPDATE system_page SET pos = 2 + 1 - pos WHERE pos IN (2, 1)
команда, меняет местами 2 записи. Затрагивает две строки и меняет в них числа в поле pos местами.
Re: Запрос UPDATE как реализовать?
Добавлено: 2017.11.30, 02:51
MaxKyivUA
Это просто
бомба! Всё легко и просто!
Спасибо большое за помощь, да благословит вас Господь!