Я пытался преобразовать сложный запрос SELECT в запрос UPDATE, но получаю синтаксическую ошибку 1064.
Цель запроса - обновить определенные строки, которые удовлетворяют определенным условиям, однакообъединения и операторы GROUP BY и HAVING делают это невозможным с помощью моего запроса.Я знаю, что это не правильный путь, но я не могу понять, каким должно быть решение.Было бы здорово, если бы кто-нибудь мог подсказать мне направление решения!
Мой запрос (значения не верны, но дают больше контекста):
UPDATE products p
JOIN products_to_specifications pts ON pts.products_id = p.products_id
JOIN products_specifications ps ON ps.specifications_id = pts.specifications_id
SET p.products_image = 'file_name.jpg'
WHERE ps.specifications_name IN ('color')
AND pts.content IN ('black')
AND p.products_manufacturer = 'BMW'
AND p.products_name = 'M5'
GROUP BY p.products_id
HAVING COUNT(DISTINCT ps.specifications_name) = 1 AND COUNT(DISTINCT pts.content) = 1
Моя структура таблицы:
таблица продуктов: products_id, products_image и т. Д. (Базовая информация одинакова для каждого продукта)
таблица products_specification: Спецификация_id, имя_ спецификации
таблица products_to_specification: products_id, spec_id, content
Я думаю, что для правильного решения я буду использовать подзапрос, но я не уверен, как структурировать запрос