Vous n'êtes pas identifié(e).
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
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().
Julien.
https://rjuju.github.io/
Hors ligne
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
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.
Julien.
https://rjuju.github.io/
Hors ligne
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
Dans ce cas, pourquoi faire une vue avec un left join et un coalese ne résoud pas votre problème ?
Julien.
https://rjuju.github.io/
Hors ligne
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