Vous n'êtes pas identifié(e).
Pages : 1
Bonjour, je tente une requète de type
update table1 set champ1 = (select champ2 from table2 a, table1 b where a.id = b.id)
cependant j'obtiens une erreur
ERREUR: plus d'une ligne renvoyée par une sous-requête utilisée comme une expression
Comment puis je faire autrement ou quelle est mon erreur ?
Merci d'avance pour votre aide.
Hors ligne
Je suppose que le but de la requête est de placer champ2 de la table table2 dans champ1 de la table table1. Il serait mieux d'écrire la requête ainsi :
UPDATE table1 SET champs1=champ2 FROM table2 WHERE table1.id=table2.id;
Guillaume.
Hors ligne
Lorsque tu fais un update, tu cherches à mettre à jour ta colonne avec une valeur donnée.
Par exemple :
update employes set salaire = 1000;
(tu mets tous les salaires de la table employes à 1000)
ou bien :
update employes set salaire = 1000 where nom = 'Dupont';
(tu mets à jour le salaire de tous les employés dont le nom est 'Dupont').
Dans le cas que tu nous donnes, la valeur est le résultat de la sous-requête : select champ2 from table2 a, table1 b where a.id = b.id
Or cette sous-requête ramène probablement plusieurs lignes, d'où l'erreur...
Si tu n'arrives pas à trouver comment résoudre le problème, il faudrait que tu donnes ta requête réelle (ou une requête similaire, mais parlante) et que tu nous explique ce que tu cherches à faire.
Cherches-tu à mettre à copier la valeur de table2.champ2 dans table1.champ1, en faisant le lien sur l'identifiant?
Hors ligne
Merci pour vos réponses.
Cherches-tu à mettre à copier la valeur de table2.champ2 dans table1.champ1, en faisant le lien sur l'identifiant?
Je suppose que le but de la requête est de placer champ2 de la table table2 dans champ1 de la table table1
oui c'est bien ca.
Je veux pouvoir récupérer plusieurs valeurs. Je travail avec une solution alternative pour le moment. Je testerai ta requête prochainement gleu.
Merci
Hors ligne
Pages : 1