powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сложный запрос с условиями по ячейкам и группировкой?
14 сообщений из 14, страница 1 из 1
Сложный запрос с условиями по ячейкам и группировкой?
    #39837669
Boxster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, коллеги!

Помогите, пожалуйста, в составлении сложного для меня запроса, так танцы с бубном не смогли вызвать результативный дождь.

Привожу схематичную структуру таблицы (слева) и то, что должно получиться в результате запроса (справа):

Скрин


Нужно заменить:
payment_id - с 52 на 68
payment_name - с "Карта" на "Нал"
payment_plugin - с "card" на "cash"

для тех order_id, где shipping_name = "авто"
...
Рейтинг: 0 / 0
Сложный запрос с условиями по ячейкам и группировкой?
    #39837672
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Сложный запрос с условиями по ячейкам и группировкой?
    #39837673
Boxster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183,

Вы точно ознакомились с описанием того, что требуется? С синтаксисом простого UPDATE / SET я знаком.
Сложность (по крайней мере, для меня) заключается в том, что условие идёт по ячейкам другой строки, а связь с заменяемыми ячейками идет через order_id.
...
Рейтинг: 0 / 0
Сложный запрос с условиями по ячейкам и группировкой?
    #39837675
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вы попробуйте сначала на русском языке сформулировать задачу.
Тогда и синтаксис будет понятен.
Про "ячейки другой строки" изначально ничего не было.
...
Рейтинг: 0 / 0
Сложный запрос с условиями по ячейкам и группировкой?
    #39837676
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А кто/что мешает сделать соответствующий фильтр?
...
Рейтинг: 0 / 0
Сложный запрос с условиями по ячейкам и группировкой?
    #39837677
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Boxsterдля тех order_id, где shipping_name = "авто"

WHERE order_id in (SELECT order_id FROM t where shipping_name = "авто")
...
Рейтинг: 0 / 0
Сложный запрос с условиями по ячейкам и группировкой?
    #39837679
Boxster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183,

благодарю за подсказку!

Сделал через:

UPDATE table SET value = 78 WHERE value = 52 AND order_id in (SELECT order_id FROM (SELECT order_id FROM table WHERE name = 'shipping_name' AND value = 'авто') AS t2)

Остальные поля аналогично.

Для избежания "Can't specify target table for update in FROM clause" для внутреннего запроса использована временная таблица и использован SELECT FROM SELECT

Возможно, это кому-нибудь пригодится.
...
Рейтинг: 0 / 0
Сложный запрос с условиями по ячейкам и группировкой?
    #39837683
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
UPDATE table SET value = 78 WHERE value = 52 AND order_id in 
(SELECT order_id FROM 
(SELECT order_id FROM table WHERE name = 'shipping_name' AND value = 'авто')
 AS t2)



Я честно не понял, зачем два раза order_id фильтровать?
...
Рейтинг: 0 / 0
Сложный запрос с условиями по ячейкам и группировкой?
    #39837686
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
UPDATE table t1, table t2
SET value = CASE name WHEN 'payment_id'     THEN 68
                      WHEN 'payment_name'   THEN 'Нал'
                      WHEN 'payment_plugin' THEN 'cash'
                                            ELSE value
            END
WHERE t1.order_id = t2.order_id
  AND t2.shipping_name = 'авто'


Для версии 8+ разумнее данные для замены сформировать в виде таблицы в CTE.
...
Рейтинг: 0 / 0
Сложный запрос с условиями по ячейкам и группировкой?
    #39837773
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот, сразу видна разница в подходах между профи и "между делом".
Забываются со временем редкие подходы и нестандартные варианты.
+ диалекты сильно влияют на эти самые подходы.
...
Рейтинг: 0 / 0
Сложный запрос с условиями по ячейкам и группировкой?
    #39837776
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BoxsterДля избежания "Can't specify target table for update in FROM clause" для внутреннего запроса использована временная таблица и использован SELECT FROM SELECT
Возможно, это кому-нибудь пригодится.
Дошло.

Попробуй так:

Код: sql
1.
2.
UPDATE table SET value = 78 WHERE value = 52 AND order_id in 
(SELECT order_id FROM table WHERE name = 'shipping_name' AND value = 'авто' AS t2)
...
Рейтинг: 0 / 0
Сложный запрос с условиями по ячейкам и группировкой?
    #39837891
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
982183сразу видна разница в подходах между профи и "между делом"Да я вообще не программист. И не DBA. Так что не надо на меня бочку-то...
...
Рейтинг: 0 / 0
Сложный запрос с условиями по ячейкам и группировкой?
    #39837937
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да и я больше IT-археолог.
...
Рейтинг: 0 / 0
Сложный запрос с условиями по ячейкам и группировкой?
    #39837978
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina982183сразу видна разница в подходах между профи и "между делом"Да я вообще не программист. И не DBA. Так что не надо на меня бочку-то...
в БД шарите, значит DBD
"назвался груздем - полезай"

а вообще там вроде комплимент был
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сложный запрос с условиями по ячейкам и группировкой?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]