PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 02/06/2016 11:04:52

lea
Membre

Update d'une table par une autre et résultat dans vue

Bonjour à tous,

je suis un peu bloquée sur la mise à jour de certaines valeurs d'une table avec des valeurs d'une autre table mais je voudrais que tout cela soit mise dans une vue ... je ne sais pas trop si je suis claire

*table 1

id        name     titre           info
-------------------------------------------
1         test        t_test         pas ok
2         essai      t_essai       ok
5         trial        t_trial        ok
10       probe      t_probe     concluant     

*table 2

id        name           titre       
------------------------------
2         re-essai       essai_fr   
10        test-probe   essai_de     

*creation Vue (Result) comme suit :

id        name               titre             info
-------------------------------------------
1         test                 t_test           pas ok
2         re-essai        essai_fr       ok
5         trial                 t_trial           ok
10       test-probe     essai_de     concluant 

Je n'ai aucun soucis à faire l'update de la table d'origine :
UPDATE table1
SET table1.name = table2.name
FROM table2
WHERE table1.id = table2.id
Ceci fonctionne très bien ... mon soucis est que je ne veux pas modifier ma table d'origine mais que la table d'origine updatée soit dans une vue ...

J'ai essayé plusieurs trucs mais sans atteindre mon résultat, il me manque une étape à chaque fois et la solution ne me vient pas.
Voyez-vous une piste?

Merci d'avance pour votre aide

Léa

Dernière modification par lea (02/06/2016 12:22:28)

Hors ligne

#2 02/06/2016 11:29:08

rjuju
Administrateur

Re : Update d'une table par une autre et résultat dans vue

Bonjour,


Je ne vois pas trop ce que vous cherchez à faire. À vue de nez, je dirais qu'il vous faut un LEFT JOIN et un coalece().

Hors ligne

#3 02/06/2016 11:39:10

lea
Membre

Re : Update d'une table par une autre et résultat dans vue

un left join ou un coalesce ne conviennent pas car je ne veux pas joindre les tables juste faire l'update dans la table1 de certaines valeurs provenant de la table2
En fait je cherche à faire cela :
UPDATE table1
SET table1.name = table2.name, table1.titre = table2.titre
FROM table2
WHERE table1.id = table2.id
Ceci fonctionne très bien ...
mon soucis est que je ne veux pas modifier ma table d'origine mais que la table d'origine updatée soit dans une vue ... je ne sais pas si je suis plus claire

*table 1

id        name     titre           info
-------------------------------------------
1         test        t_test         pas ok
2         essai      t_essai       ok
5         trial        t_trial        ok
10       probe      t_probe     concluant     

*table 2

id        name           titre       
------------------------------
2         re-essai       essai_fr   
10        test-probe   essai_de     

*creation Vue (Result) comme suit :

id        name               titre             info
-------------------------------------------
1         test                 t_test           pas ok
2         re-essai        essai_fr       ok
5         trial                 t_trial           ok
10       test-probe     essai_de     concluant

Dernière modification par lea (02/06/2016 12:21:36)

Hors ligne

#4 02/06/2016 13:12:12

rjuju
Administrateur

Re : Update d'une table par une autre et résultat dans vue

lea a écrit :

faire l'update dans la table1 de certaines valeurs provenant de la table2
[...]
mon soucis est que je ne veux pas modifier ma table d'origine

Désolé, je ne comprends vraiment pas.

Hors ligne

#5 02/06/2016 18:31:50

lea
Membre

Re : Update d'une table par une autre et résultat dans vue

J'ai 2 tables :
table1 :
la table d'origine avec un bon nombre d'enregistrements et de champs
id        name     titre           info
-------------------------------------------
1         test        t_test         pas ok
2         essai      t_essai       ok
5         trial        t_trial        ok
10       probe      t_probe     concluant     

Je reçois des mises à jour via une autre table (table2). Cette table (table2) ne concerne pas tous les champs et pas tous les enregistrements de la table d'origine :
table2
id        name           titre       
------------------------------
2         re-essai       essai_fr   
10        test-probe   essai_de   


Les 2 tables ont un identifiant commun (id), c'est grâce à celui-ci que je pourrais faire la mise à jour des nouvelles données dans la table d'origine.


Mais je ne peux pas toucher à la table d'origine (table1)... je voudrais faire une vue qui reprenne toutes les données de la table d'origine avec les enregistrements qui ont été mis à jour :

id        name               titre             info
-------------------------------------------
1         test                 t_test           pas ok
2        re-essai        essai_fr       ok
5         trial                 t_trial           ok
10       test-probe     essai_de     concluant

(-->en gras, les valeurs qui ont été mises à jour)
C'est plus clair?

Dernière modification par lea (02/06/2016 18:33:22)

Hors ligne

#6 02/06/2016 21:54:13

rjuju
Administrateur

Re : Update d'une table par une autre et résultat dans vue

Dans ce cas, pourquoi faire une vue avec un left join et un coalese ne résoud pas votre problème ?

Hors ligne

#7 03/06/2016 09:29:02

lea
Membre

Re : Update d'une table par une autre et résultat dans vue

Vraiment désolée, j'étais partie sur quelque chose plus tordu et ça n'avait pas percuté dans ma tête ta première réponse ... oui, en effet je peux faire comme cela ...
Merci

Hors ligne

Pied de page des forums