Commande Select AVG() From dans un Update

Fermé
Galzi Messages postés 131 Date d'inscription samedi 29 septembre 2007 Statut Membre Dernière intervention 21 avril 2015 - Modifié par jordane45 le 22/01/2015 à 13:49
Galzi Messages postés 131 Date d'inscription samedi 29 septembre 2007 Statut Membre Dernière intervention 21 avril 2015 - 30 janv. 2015 à 13:59
Bonjour,

J'ai un entrainement à effectuer en SQL et une ligne de code qui me semble correcte ne fonctionne pas sur MYSQL:
UPDATE EMP 
SET COM=(SELECT AVG(COM) FROM EMP)
WHERE HDATE<'1982-01-01' 
AND COM IS NULL

=> Error 1093: You can't specify target table EMP for update in form clause

Quelqu'un a une idée ? :)


A voir également:

2 réponses

flokocha Messages postés 1510 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 10 octobre 2015 280
23 janv. 2015 à 14:22
Salut,

Quelle est la structure de ta table EMP ?

Selon moi, tu dois créer une table temporaire pour y stocker tes moyennes, puis faire une jointure avec cette table temporaire lors de ton update.
0
Galzi Messages postés 131 Date d'inscription samedi 29 septembre 2007 Statut Membre Dernière intervention 21 avril 2015 20
30 janv. 2015 à 13:59
Bonjour,

Merci flokocha pour ta réponse, excuses moi de ne pas avoir répondu plus tot. Voici le code de création de ma table EMP:

CREATE Table EMP
(EMPNO INT(4) unsigned not null primary key,
ENAME VARCHAR(10),
JOB VARCHAR(10),
MGR INT(4) unsigned,
HIREDATE DATE not null,
SAL FLOAT(6,2),
COM FLOAT(6,2),
DEPTNO INT(2) unsigned not null,
CONSTRAINT CleEtrDEPTNO FOREIGN KEY (DEPTNO)
REFERENCES DEPT(DEPTNO));

INSERT INTO EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COM, DEPTNO)
VALUES
(7369, 'SMITH', 'CLERK', 7902, '1980-12-17', 800.00, NULL, 20),
(7499, 'ALLEN', 'SALESMAN', 7698, '1981-02-20', 1600.00, 300.00, 30), ...

Il faudrait donc que je fasse un select des COM, puis faire la moyenne de tout ça et enfin utiliser un JOIN avec ma table EMP ?
0