Bonjour,

Je suis sous postgres (pgAdmin4), je dois cleaner des données, j'ai repris le codage SQL il y a peu....

Je veux mettre à jour les observateurs d'une tables (Tmj) en fonction d'une table de correspondance (Tc).
Tmj = 400 lignes comporte le champs "_obs" (80 occurrences différentes) et les champs observateurs ;
Tc = 80 lignes comporte le champs "obs" (pour jointure) et les codes à assigner aux champs observateur_1, 2, etc.
Voici une de mes nombreuses tentatives :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
UPDATE fwd.Tmj
    SET 
        observateur_1 = Tc.observateur_1, 
        observateur_2 = Tc.observateur_2,
        observateur_3 = Tc.observateur_3,
        observateur_4 = Tc.observateur_4
    FROM  fwd.Tc
    WHERE fwd.Tc.obs=fwd.Tmj._obs
ou ça aussi
avec la table d'origine (TmjOrigine) en plus comportant tous les identifiants de ligne (2e jointure)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
UPDATE fwd.Tmj
    SET (
    observateur_1,
    observateur_2,
    observateur_3,
    observateur_4
        ) = 
        (SELECT 
        observateur_1,
        observateur_2,
        observateur_3,
        observateur_4
         FROM fwd.Tc
         INNER JOIN fwd.TmjOrigine
         USING (obs)
         WHERE Tmj.idorigine = TmjOrigine.keyuuid 
        );
Ces requêtes ne traitent que partiellement la table. Des champs reste vident.
Je comprends les problèmes de ces requêtes mais là je tourne en rond depuis hier.
Comment l'appliquer à toutes les lignes ?
J'ai pensé aux boucles mais je ne sais pas vraiment comment les intégrer dans PgAdmin ni gérer le curseur...
bref, j'ai besoin d'aide.

Je vous remercie d'avance,