Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
964 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL]Execution d'une sous requete qui retourne plusieurs lignes

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MySQL]Execution d'une sous requete qui retourne plusieurs lignes

n°1517110
weed
Posté le 20-02-2007 à 15:48:38  profilanswer
 

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 ?

mood
Publicité
Posté le 20-02-2007 à 15:48:38  profilanswer
 

n°1517121
anapajari
s/travail/glanding on hfr/gs;
Posté le 20-02-2007 à 15:58:26  profilanswer
 

Code :
  1. update RESILIATION RE set DATE_DEPART='2007-03-01', FICHIER=''
  2. where exists
  3.    RE.FICHIERS != '' AND
  4.    RE.TYPE_RESIL in ('0', '2') AND
  5.    EXISTS
  6.    ( 
  7.     select C.ID_CLIENT
  8.     from `CLIENT` C 
  9.       inner join FACTURE R on C.HD=R.HD 
  10.     where 
  11.      R.ETAT_PRINCIPAL!='RESILIER' 
  12.     and 
  13.      C.ID_CLIENT = RE.ID_CLIENT
  14.    )


Message édité par anapajari le 20-02-2007 à 15:58:56
n°1517133
weed
Posté le 20-02-2007 à 16:36:03  profilanswer
 

curieux, ces 2 exists. Il faut que je reéxecute cette requette ds 15 jours. Je réessairai.

n°1517142
anapajari
s/travail/glanding on hfr/gs;
Posté le 20-02-2007 à 16:48:57  profilanswer
 

nan mais j'ai écrit de tête et  merdé la requete hein s'tout :o
faut virer celui qu'est a coté du where :o

n°1517151
weed
Posté le 20-02-2007 à 17:11:33  profilanswer
 

rohhhhhh  :o  
merci pour l'astuce ....
je comprends le principe, je verrais ds 15 jours.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL]Execution d'une sous requete qui retourne plusieurs lignes

 

Sujets relatifs
Requête sql + javascriptmon site a un affichage différent sur plusieurs moniteurs
[MySQL] Index full text sur champs multiplesEnvoyer des valeurs dans une colonne de MySQL
[résolu] Moyenne sur plusieurs colonnes enummenu à plusieurs niveaux
[MySQL] Tutoriel sur les clefsSupprimer les dernières lignes d'un fichier.
[Php] Indexation de document Pdf, Doc ou Xls sous PHP / MySQL[c/c++] lire des lignes en boucle jusqu'a EOF
Plus de sujets relatifs à : [MySQL]Execution d'une sous requete qui retourne plusieurs lignes


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR