Execution d'une sous requete qui retourne plusieurs lignes [MySQL] - SQL/NoSQL - Programmation
Marsh Posté le 20-02-2007 à 15:58:26
Code :
|
Marsh Posté le 20-02-2007 à 16:36:03
curieux, ces 2 exists. Il faut que je reéxecute cette requette ds 15 jours. Je réessairai.
Marsh Posté le 20-02-2007 à 16:48:57
nan mais j'ai écrit de tête et merdé la requete hein s'tout
faut virer celui qu'est a coté du where
Marsh Posté le 20-02-2007 à 17:11:33
rohhhhhh
merci pour l'astuce ....
je comprends le principe, je verrais ds 15 jours.
Marsh Posté le 20-02-2007 à 15:48:38
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 :
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 ?