Использование UPDATE FROM для массовой установки поля - PullRequest
2 голосов
/ 29 марта 2011

У меня есть следующий запрос, который я использовал для получения идентификатора транспортного средства, его регистрации, идентификатора водителя и имени водителя. Таблица _core_people, на которую вы ссылаетесь в этом запросе, также является полем, которое я хочу установить на табличку автомобиля.

Вот запрос:

SELECT fv._plate, cp._people_name
FROM
_fleet_vehicle fv,
_fleet_vehicle_status fvs,
_core_people cp,
_fleet_allocation fa
WHERE 
cp._id_hierarchy = fv._id_hierarchy
AND fv._id_status = fvs._id
AND fvs._status_live = 1
AND fa._id_person = cp._id
AND fa._id_vehicle = fv._id
AND fa._alloc_end_date IS NULL
ORDER BY cp._people_name ASC

Теперь я хочу написать предложение UPDATE...FROM, которое использует это, чтобы установить _core_people._plate (здесь не показан) в поле номерного знака их транспортного средства.

Однако я не уверен, как правильно структурировать предложение UPDATE...FROM.

Кроме того, у некоторых водителей есть 2 машины. Это все еще будет работать?

Заранее спасибо!

1 Ответ

3 голосов
/ 29 марта 2011
UPDATE  _core_people
SET     _plate = fv._plate
FROM    _fleet_vehicle fv,
        _fleet_vehicle_status fvs,
        _core_people cp,
        _fleet_allocation fa
WHERE   cp._id_hierarchy = fv._id_hierarchy
        AND fv._id_status = fvs._id
        AND fvs._status_live = 1
        AND fa._id_person = cp._id
        AND fa._id_vehicle = fv._id
        AND fa._alloc_end_date IS NULL

Если существует более 1 записи для _core_people, соответствующей условию, _core_people будет обновлено только до одной из них (невозможно точно определить, какая именно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...