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
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 20/02/2008, 14h37   #1 (permalink)
Membre éclairé
 
Avatar de Linio
 
Date d'inscription: octobre 2005
Messages: 390
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)
Membre expérimenté
 
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: 390
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 Proposer ce sujet en actualité

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



Fuseau horaire GMT +1. Il est actuellement 02h48.


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-2010 www.developpez.com - Legal informations.