Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > Зависимое значение поля в наборе при обновлении


Автор: poopoohat 18.1.2011, 10:48
Здравствуйте!

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

Есть некоторый товар в таблице goods, его принадлежность к организации указана в поле organization_id, а принадлежность к определенному адресу — в поле location_id. Соответственно, есть таблицы organizations и locations.

Связь между организациями и адресами: «один ко многим». Отношение организаций и адресов к товарам так же «один ко многим».

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

UPDATE `goods` 
  SET `organization_id` = A, `location_id` = B
  WHERE `goods`.`id`= C


А и С известны при формировании запроса и задаются явно. Но при этом на месте параметра B должен быть идентификатор адреса организации А. Его можно получить, например, таким запросом:
Код

SELECT `id` FROM `locations` WHERE `organization_id` = A LIMIT 1


Подскажите, пожалуйста, возможно ли объединить эти два запроса в одном?

Автор: Zloxa 18.1.2011, 11:38
Код

UPDATE `goods` 
  SET `organization_id` = A, `location_id` = (SELECT `id` FROM `locations` WHERE `organization_id` = A LIMIT 1)
  WHERE `goods`.`id`= C

?

Автор: poopoohat 18.1.2011, 11:48
Zloxa, спасибо! Я плохо еще разбираюсь в языке, поэтому такие глупые вопросы (теперь-то и мне ясно, что глупость спросил).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)