Bonjour,
Après des recherches sur le forum, j'ai trouvé des sujets très proches de mon problème mais non identiques et dont la solution n'est pas adaptée, donc, je poste !
Voici :
ma requête porte sur deux tables COMMANDE(NUMCOM, #NUMFOU, OBSCOM, DATCOM) et FOURNIS (NUMFOU, NOMFOU, RUEFOU, POSFOU, VILFOU, CONFOU, SATISF). la clé primaire de la table COMMANDE est NUMCOM, la clé primaire de la table FOURNIS est NUMFOU.
Je dois mettre à jour le champ obscom en le positionnant à '*****' pour toutes les commandes dont le fournisseur a un indice de satisfaction <5.
J'ai donc écrit ceci :
Mais j'obtiens l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 UPDATE COMMANDE c SET c.OBSCOM = '*****' WHERE c.NUMFOU = (SELECT f.NUMFOU FROM FOURNIS f WHERE SATISF <= 5);
J'ai bien compris que l'erreur vient du fait que la sous-requête me renvoie plusieurs lignes et que le set ne peut pas faire son travail étant donné qu'il ne veut qu'un seul paramètre des deux côtés du signe =.sous-interrogation ramenant un enregistrement de plus d'une ligne
Mais moi je veux que le set fasse son travail pour chacune des valeurs renvoyées par la sous-requête. C'est normal qu'une valeur ne puisse pas être settée à plusieurs valeurs mais cela devrait être possible pour plusieurs valeurs 'une à une' !
non ?!?
Merci à tous !
Partager