2013-06-27 1 views
2

J'ai la requête suivante et j'ai besoin de l'exécuter plusieurs fois avec des noms différents, Mais comment puis-je faire une fonction de toutes les requêtes de sorte que j'ai seulement besoin d'exécuter cette fonction au lieu de toutes les requêtes une par une.Comment faire fonctionner des requêtes SQL

update clean.vehicles set make='Ford' where type ilike '%explorer%' 
update clean.vehicles set make='Chevrolet' where type ilike '%lumina%' 
update clean.vehicles set make='Ford' where type ilike '%crown%' 
update clean.vehicles set make='Subaru' where type ilike '%suburu%' 
update clean.vehicles set make='Subaru' where type ilike '%legacy%' 
update clean.vehicles set make='Infiniti' where type ilike '%infinitie%' 
update clean.vehicles set make='Ford' where type ilike '%windstar%' 
update clean.vehicles set make='Volkswagen' where type ilike '%vw%' 
update clean.vehicles set make='Mitsubishi' where type ilike '%mitsubishi%' 
update clean.vehicles set make='Infiniti' where type ilike '%infiniti%' 
update clean.vehicles set make='Chevrolet' where type ilike '%chev%' 
update clean.vehicles set make='Chrysler' where type ilike '%plymouth%'  
update clean.vehicles set make='Chrysler' where type ilike '%plymoth% 

Merci

Répondre

1

Vous avez besoin d'une table de correspondance pour rechercher la marque lorsque vous spécifiez le type (ou vice-versa).

Make  Type 
Ford  Explorer 
Chevrolet Lumina 
Ford  Crown 
Subaru  Legacy 

Ensuite, lorsque vous appelez votre fonction GetMake (type), il fait une requête en utilisant le type dans la requête, retourne la marque, et vous pouvez ensuite utiliser les résultats dans votre requête ci-dessus.

1

Sinon, vous pouvez simplement faire ...

UPDATE clean.vehicles 
SET make = CASE 
       WHEN type ilike '%explorer%' 
        THEN 'Ford' 
       WHEN type ilike '%lumina%' 
        'Chevrolet' 
       ELSE 
        make 
      END 

Cela fera une mise à jour sur tous les enregistrements si les enregistrements non compatibles devraient être inchangés. Si vous ne mettez à jour qu'un sous-ensemble des enregistrements, vous pouvez ajouter une clause WHERE pour correspondre uniquement à ces types.

Questions connexes