Page 1 sur 1

update dans une table

Posté : 21 sept. 2007, 17:26
par bebey
Salut
J'ai une table dans laquelle je veux ecrire un enregistrement de type taux et j'ai fait
update Ma_table set Mon_taux=(select le_taux from Table_taux) where 1=1
et j'ai un message d'erreur A subquery has returned not exactly one row
Que faire ?????
Bye

Posté : 21 sept. 2007, 18:33
par led
A subquery has returned not exactly one row
Je suis pas un expert, mais cela signifit que ta sous requete (select te taux from taux) ne renvoie pas exactement une ligne mais plusieurs.
Je pense que tu dois mettre dans cette sous requete, une clause where afin d'obtenir moins de resultats....
EN fat, ta requete d'insertion insert un taux dans ta table, ici elle ne peut pasle faire, vu que tu selectionne des taux.
Affiche le resultat de ta sous requete et tu verras ce que je veux dire...

Posté : 21 sept. 2007, 18:43
par albat
Led a bien identifié le problème.
Ta sous-requête doit retourner un résultat et un seul,
puisque celui-ci sera le second membre d'une égalité.
Il faut donc ajouter un filtre (une clause WHERE) dans ta sous-requête

En outre, la clause finale de ta requête principale est ici totalement inutile.

Je te propose donc la réécriture suivante (à compléter) :

Code : Tout sélectionner

UPDATE Ma_table SET Mon_taux=(SELECT le_taux FROM Table_taux WHERE ...)
Attention :!:
TOUS les enregistrements de la table Ma_table seront mis à jour...

Posté : 21 sept. 2007, 18:54
par led
Voila et pour ne pas mettre à jour tous les enregistrements de la table Ma_Table tu dois mettre une clause Where machin=truc

En reprennant la requete d'Albat
UPDATE Ma_table SET Mon_taux=(SELECT le_taux FROM Table_taux WHERE ...) WHERE MACHIN_DE MA_TABLE=TRUC;
A++