Commande Select AVG() From dans un Update

Galzi Messages postés 131 Date d'inscription   Statut Membre Dernière intervention   -  
Galzi Messages postés 131 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   281
 
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   Statut Membre Dernière intervention   20
 
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