2011-03-29 1 views
2

J'ai la requête suivante que j'ai utilisée pour extraire un ID de véhicule, son enregistrement, un identifiant de pilote et le nom du pilote. La table _core_people que vous voyez référencée dans cette requête contient également un champ que je souhaite placer sur la plaque du véhicule.Utilisation de UPDATE FROM pour définir en masse un champ

est ici la requête:

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 

Maintenant, je veux écrire une clause UPDATE...FROM qui utilise ce paramètre pour définir _core_people._plate (non représenté ici) au champ de la plaque de leur véhicule.

Toutefois, je ne sais pas comment structurer la clause UPDATE...FROM.

En outre, certains pilotes ont 2 voitures. Cela fonctionnera-t-il encore?

Merci d'avance!

Répondre

3
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 

S'il y a plus de 1 record _core_people correspondant à la condition, _core_people sera mis à jour à un seul d'entre eux (il est impossible de dire lequel exactement).

+0

Huh, assez simple quand on le regarde. Cela a fonctionné un charme, merci beaucoup pour votre réponse rapide. –

Questions connexes