Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes

Requêtes Forum d'entraide sur les requêtes MySQL

Réponse
 
Outils de la discussion
Vieux 20/02/2008, 14h37   #1 (permalink)
Membre éclairé
 
Avatar de Linio
 
Date d'inscription: octobre 2005
Messages: 391
Par défaut Can't specify target in FROM clause

Bonjour à tous!

J'ai un petit soucis, et j'avoue ne pas bien comprendre pourquoi.
J'ai toujours eu du mal avec cette erreur mais il me semblait que la solution du AS corrigait ça, pourtant j'ai encore la même erreur :

Code :
UPDATE infos AS p1 SET p1.px = p1.px - 1000
WHERE p1.id = 1 AND p1.ip IN 
   (SELECT p2.ip FROM infos AS p2 WHERE p2.id = 2)
You can't specify target table 'p1' for update in FROM clause

Pourtant pas de P1 dans le FROM...
Une idée? J'a trompé?
__________________
Linio
lordproject
Linio est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 20/02/2008, 15h16   #2 (permalink)
Modérateur
 
Date d'inscription: août 2005
Messages: 516
Par défaut

Bonjour,
vous ne pouvez pas effectuer un UPDATE avec une sous-requête SELECT travaillant sur la même table, pour effectuer cette requête, vous devez créer une table temporaire qui fera la passerelle entre le SELECT et l'UPDATE.

Cela a été dit plusieurs fois dans les derniers jours.

Code :
UPDATE infos AS p1 
 SET p1.px = p1.px - 1000
 WHERE p1.id = 1 AND p1.ip IN 
 (
  SELECT * 
   FROM 
   (
    SELECT p2.ip 
     FROM infos AS p2 
     WHERE p2.id = 2
   ) 
   tmp
 )
;
Cordialement,
DaRiaN.

Dernière modification par DaRiaN ; 20/02/2008 à 15h30. Motif: ajout de la requête
DaRiaN est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 20/02/2008, 16h45   #3 (permalink)
Membre éclairé
 
Avatar de Linio
 
Date d'inscription: octobre 2005
Messages: 391
Par défaut

Je n'y entendrai donc jamais vraiment grand chose à cette erreur...

L'astuce marche merci beaucoup !
__________________
Linio
lordproject
Linio est déconnecté   Envoyer un message privé Réponse avec citation
NEWS MYSQLF.A.Q MYSQLSOURCES MYSQLTUTORIELS MYSQLOUTILS MYSQLLIVRES MYSQL

Réponse

Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 22h02.


Vos questions techniques : forum d'entraide MySQL - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2009 www.developpez.com - Legal informations.