где value = name в таблице 1, checked = is_checked в таблице 2(form_condition)
Исходя из этих данных, мне нужно наименьшим количеством запросов обновить данные в таблице form_condition, я написал 2 варианта запроса, но может что упускаю — Кто подскажет, как это сделать проще всего?
Я использую python+sqlalchemy, но вообще интересует sql-скрипт апдэйта. Свои пока не привожу, чтобы не навязать свое решение, может оно неоптимальное
LEOnidUKG
Исходя из этих данных, мне нужно наименьшим количеством запросов обновить данные в таблице form_condition, я
Эм… ну формируйте запросы соединяя их. Будет два запрос, один на первую таблицу, второй на вторую.
ArbNet
Тоже мне инженер 😁 гнать таких сраной метлой
UPDATE `condition` as t1, `form_conditions` as t2 SET t2.is_checked=CASE t1.name WHEN 'new' THEN 7 WHEN 'used' THEN 8 WHEN 'demo' THEN 9 END WHERE t1.name IN('new','used','demo') AND t1.id=t2.condition_id
Sly32
LEOnidUKG #:
Эм… ну формируйте запросы соединяя их. Будет два запрос, один на первую таблицу, второй на вторую.
Я видимо непонятно обьяснил задачу
Sly32
ArbNet #:
Тоже мне инженер 😁 гнать таких сраной метлой
Серьезно? А если у меня будет 50 name в condition? » Это раз и второе — твой код вообще не будет работать
Что по итогу попадет в is_checked?
LEOnidUKG
Sly32 #:
Я видимо непонятно обьяснил задачу
Это же не академическая у вас задача?
Тогда не понимаю в чём суть ограничения количества запросов, если они простые и рубят по индексу? Если дело в скорости, можно выключить обновление индексов и потом отдельно запустить. Также всё один COMMIT вставить.
ArbNet
Sly32 #:
Серьезно? А если у меня будет 50 name в condition?
Удивительно как только тебя держат, хотя чего удивляться начальники у вас ещё тупее по ходу..
Пусть хоть миллион, в запросе выборка идёт только полей с
t1.name IN('new','used','demo') AND t1.id=t2.condition_id
Sly32
LEOnidUKG #: Это же не академическая у вас задача?
Нет. Суть — найти оптимальное и красивое решение. естественно что все работает и в пределах коммита и в транзакции. Но не хотелось бы идти в базу 50 раз когда можно 2
Все крутится на AWS с оплатой за ресурсы
Sly32
ArbNet #:
Удивительно как только тебя держат, хотя чего удивляться начальники у вас ещё тупее по ходу..
Пусть хоть миллион, в запросе выборка идёт только полей с
CASE тут вообще не нужен. А еще раз начнешь переходить на личности — увидишь результат.
Какие значения попадут в is_checked? Пример
LEOnidUKG
Sly32 #:
Нет. Суть — найти оптимальное и красивое решение. естественно что все работает и в пределах коммита и в транзакции. Но не хотелось бы идти в базу 50 раз когда можно 2
Все крутится на AWS с оплатой за ресурсы
А может быть поменять первичный индекс? Убрать этот id_ а вместо него использовать name т.к. он там же будет уникальный. Тогда у нас отпадёт надобность обращаться вообще во вторую таблицу, чтобы узнать его id
Вторая таблица останется чисто на вывод информации.
Sly32
LEOnidUKG #:
А может быть поменять первичный индекс? Убрать этот id_ а вместо него использовать name т.к. он там же будет уникальный. Тогда у нас отпадёт надобность обращаться вообще во вторую таблицу, чтобы узнать его id
Вторая таблица останется чисто на вывод информации.
Есть бизнесрулы, которые я не могу менять на лету. Меня интересует оптимальный запрос, только)
Попробовал вставить вариант арбнета в консоль — чекер мне покрутил у виска))) Ошибка на ошибке. Не знаю, может в мускле так можно, постгрес ругается. Невозможно апдейтать по 2-м таблицам
Sly32
Вопрос по SQL
есть две таблицы:
и
Формируются так:
Мне приходит json с данными для обновления:
где value = name в таблице 1, checked = is_checked в таблице 2(form_condition)
Исходя из этих данных, мне нужно наименьшим количеством запросов обновить данные в таблице form_condition, я написал 2 варианта запроса, но может что упускаю — Кто подскажет, как это сделать проще всего?
Я использую python+sqlalchemy, но вообще интересует sql-скрипт апдэйта. Свои пока не привожу, чтобы не навязать свое решение, может оно неоптимальное
LEOnidUKG
Эм… ну формируйте запросы соединяя их. Будет два запрос, один на первую таблицу, второй на вторую.
ArbNet
Тоже мне инженер 😁 гнать таких сраной метлой
Sly32
Эм… ну формируйте запросы соединяя их. Будет два запрос, один на первую таблицу, второй на вторую.
Я видимо непонятно обьяснил задачу
Sly32
Тоже мне инженер 😁 гнать таких сраной метлой
Серьезно? А если у меня будет 50 name в condition? » Это раз и второе — твой код вообще не будет работать
Что по итогу попадет в is_checked?
LEOnidUKG
Я видимо непонятно обьяснил задачу
Это же не академическая у вас задача?
Тогда не понимаю в чём суть ограничения количества запросов, если они простые и рубят по индексу? Если дело в скорости, можно выключить обновление индексов и потом отдельно запустить. Также всё один COMMIT вставить.
ArbNet
Серьезно? А если у меня будет 50 name в condition?
Удивительно как только тебя держат, хотя чего удивляться начальники у вас ещё тупее по ходу..
Пусть хоть миллион, в запросе выборка идёт только полей с
t1.name IN('new','used','demo') AND t1.id=t2.condition_id
Sly32
Это же не академическая у вас задача?
Нет. Суть — найти оптимальное и красивое решение. естественно что все работает и в пределах коммита и в транзакции. Но не хотелось бы идти в базу 50 раз когда можно 2
Все крутится на AWS с оплатой за ресурсы
Sly32
Удивительно как только тебя держат, хотя чего удивляться начальники у вас ещё тупее по ходу..
Пусть хоть миллион, в запросе выборка идёт только полей с
CASE тут вообще не нужен. А еще раз начнешь переходить на личности — увидишь результат.
Какие значения попадут в is_checked? Пример
LEOnidUKG
Нет. Суть — найти оптимальное и красивое решение. естественно что все работает и в пределах коммита и в транзакции. Но не хотелось бы идти в базу 50 раз когда можно 2
Все крутится на AWS с оплатой за ресурсы
А может быть поменять первичный индекс? Убрать этот id_ а вместо него использовать name т.к. он там же будет уникальный. Тогда у нас отпадёт надобность обращаться вообще во вторую таблицу, чтобы узнать его id
Вторая таблица останется чисто на вывод информации.
Sly32
А может быть поменять первичный индекс? Убрать этот id_ а вместо него использовать name т.к. он там же будет уникальный. Тогда у нас отпадёт надобность обращаться вообще во вторую таблицу, чтобы узнать его id
Вторая таблица останется чисто на вывод информации.
Есть бизнесрулы, которые я не могу менять на лету. Меня интересует оптимальный запрос, только)
Попробовал вставить вариант арбнета в консоль — чекер мне покрутил у виска))) Ошибка на ошибке. Не знаю, может в мускле так можно, постгрес ругается. Невозможно апдейтать по 2-м таблицам