JOIN запрос и UPDATE - MySQL

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

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

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

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

textual
Листинг программы
  1. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут