requête d'insertion après un WITH ?
Bonjour, pour un projet de développement de page admin qui permet de faire des ajouts et des suppression dans la base grâce à une interface web j'ai un petit problème...
Il y a une page qui permet de gérer des fonctions (dans la base de donnée il y a donc une table fonction composé de 2 champs : id, libelle).
Or dans cette table il existe plusieurs libelle avec des ID différent (chaque fonction est plus tard lié à un secteur donc il se peut que certains secteurs ai le même libelle de fonction)
Je cherche donc à faire un UPDATE de cette table afin de rajouter le trigramme du secteur devant la fonction.
J'ai les tables suivantes :
fonction (id,libelle,up_libelle*)
machine(id, libelle, secteur_id)
secteur(id,libelle)
codepannes(id, fonction_id,machine_id)
* c'est dans ce champ qui est pour le moment vide que je souhaite insérer le nouveau libelle avec le trigramme
je fais donc des jointures pour remonter de la fonction jusqu'au secteur en question, puis je prend le trigramme du secteur et enfin je concatène le tout.
j'ai donc fais :
Code:
1 2 3 4 5 6 7 8 9
| WITH fonction_up AS (SELECT DISTINCT f.id AS id,CONCAT(SUBSTRING(up.libelle, 4, 3),'_',f.libelle) AS fonction, f.libelle AS libelle
FROM maint_ta_codepannes cp
JOIN maint_ta_fonction f ON cp.fonction_id = f.id
JOIN maint_ta_machines m ON cp.machine_id = m.id
JOIN serm_secteurs up ON up.id = m.secteur_id
WHERE f.libelle = 'Presse'
)
UPDATE maint_ta_fonction SET maint_ta_fonction.up_libelle = fonction_up.fonction
FROM fonction_up; |
Le WITH marche très bien en revanche j'ai fais des recherches ne trouvant pas la solution du UPDATE, j'ai tenté beaucoup de syntaxes différentes, j'ai tenté un WITH suivi d'un MERGE INTO puis faire le UPDATE quand sa match... mais apparemment pgsql est assez fermé pour tout ça et ne prend pas beaucoup de syntaxe en compte ...
quelqu'un pourrait me guider sur la bonne voie ?