JOIN запрос и UPDATE - MySQL

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, есть запрос на выборку з бд айдишиников опеределенных отелей
SELECT DISTINCT  `ho`.`hotel_id` FROM `hotel` AS `ho`
INNER JOIN `city_regions` AS `ci` ON ho.city_id = ci.city_id 
INNER JOIN `region_lang` AS `rl` ON rl.region_id=ci.region_id
LEFT JOIN  `hotel_description_translations` AS `hd` ON hd.hotel_id=ho.hotel_id
WHERE
rl.name='Карпаты';
Запрос робочий, но тепеть мне нужно обновить данные в еще одной таблице изпользовав эти айдишгики то есть запрос типо такой
UPDATE hotel_description_translations 
SET lang_id ='-2'
WHERE lang_id='2'
AND hotel_id IN (SELECT DISTINCT  `ho`.`hotel_id` FROM `hotel` AS `ho`
INNER JOIN `city_regions` AS `ci` ON ho.city_id = ci.city_id 
INNER JOIN `region_lang` AS `rl` ON rl.region_id=ci.region_id
LEFT JOIN  `hotel_description_translations` AS `hd` ON hd.hotel_id=ho.hotel_id
WHERE
rl.name='Карпаты');
В запросе ошибка, знаю что если запрос с Join то так SELECT в UPDATE писать нельзя..но незнаю как это исправить, помогите пожалуйста...!!

Решение задачи: «JOIN запрос и UPDATE»

textual
Листинг программы
update a set a.CNT = (select COUNT(distinct b.UID ) from b where a.key = b.key);

Объяснение кода листинга программы

В представленном коде выполняется операция UPDATE, которая обновляет значение поля CNT в таблице a. Значение этого поля устанавливается равным количеству уникальных значений UID в таблице b, которые соответствуют определенному ключу. При этом выполняется операция JOIN между таблицами a и b по полю key. Вот список действий, которые выполняются в данном коде:

  1. Выполняется операция UPDATE для таблицы a.
  2. В поле CNT устанавливается значение, равное количеству уникальных значений UID в таблице b.
  3. Для выполнения операции JOIN используется условие, что значение поля key в таблице a равно значению поля key в таблице b.
  4. В подзапросе используется функция COUNT(DISTINCT b.UID), которая подсчитывает количество уникальных значений UID в таблице b.
  5. Значение поля CNT в таблице a обновляется с использованием полученного результата из подзапроса.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.5 из 5