Bonjour,
J'ai une sous requetes qui me retournes plusieurs ID_CLIENT et j'aimerais faire sur ces clients faire un update dans la table resiliation.
j'ai essayé comme requete :
update RESILIATION set DATE_DEPART='2007-03-01', FICHIER=''
where ID_CLIENT = ( select RE.ID_CLIENT from `CLIENT` C inner join FACTURE R on C.HD=R.HD inner join RESILIATION RE on C.ID_CLIENT=RE.ID_CLIENT where R.ETAT_PRINCIPAL!='RESILIER' and RE.FICHIER != '' and RE.TYPE_RESIL in ('0', '2')
)
|
mais le problème, cela me retourne l'erreur :ERROR 1242: Subquery returns more than 1 row
k'ai donc essayé en remplacant le = par un in
update RESILIATION set DATE_DEPART='2007-03-01', FICHIER=''
where ID_CLIENT in ( select RE.ID_CLIENT from `CLIENT` C inner join FACTURE R on C.HD=R.HD inner join RESILIATION RE on C.ID_CLIENT=RE.ID_CLIENT where R.ETAT_PRINCIPAL!='RESILIER' and RE.FICHIER != '' and RE.TYPE_RESIL in ('0', '2')
)
|
mais maintenant, j'ai l'erreur ERROR 1093: You can't specify target table 'RESILIATION' for update in FROM clause ...
Et malheuresement selon le site de MySQL :
Citation :
Il est valide d'utiliser une sous-requête lors d'une affectation dans une commande UPDATE, car les sous-requêtes sont valides avec les commandes UPDATE et DELETE, tout comme dans les commandes SELECT. Cependant, vous ne pouvez pas les utiliser sur la même table, qui est ici t1, car cette table est alors la cible de la clause FROM et de la commande UPDATE.
|
http://dev.mysql.com/doc/refman/5. [...] rrors.html
Est ce qu'il y aurait donc moyen de faire une seule requete ce que j'aimerais bien faire ?