Bonjour à tous!
je vais essayer de faire court...

Voici mes tables et les champs qui nous interessent.

Soiree: id_soiree, id_dj, date_soiree,reussite soirée.->repertorie les soirées.
DJ:id_dj, xp_dj->repertorie les differents djs et leur carac
matos, id_matos, id_dj, id_objet->repertorie tous les matos, individuellements
objet: id_objet, xp_objet->repertorie les caracteristik de chak matos

En fait, je veux ajouter au DJ l'XP: SUM(xp_objet)*3*(reussite_soiree+50)/100
Sachant que le DJ peut avoir jusqu"'a 6objets, d'ou la somme.

par contre, je ne veux updater que les DJs dont l'id_dj est dans la table soiree, et dont la date de la soiree, date_soiree, est egale a un jour precis.

Voici donc ma requete:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
UPDATE dj SET dj.xp_dj=dj.xp_dj+(
SELECT IFNULL(SUM(objet.xp_objet*3*(soiree.reussite_soiree+50) )/100 ,0)
FROM soiree
LEFT JOIN matos ON matos.id_dj=soiree.id_dj
LEFT JOIN objet ON objet.id_objet=matos.id_objet
WHERE soiree.date_soiree="2007-07-19" AND soiree.id_dj=dj.id_dj
GROUP BY dj.id_dj
)
Etonnament, ma requete ne fait pas l'addition! Pour ceux dont cela ajoute reelement quelque chose cela marche, mais pour ceux dont ca fait +0, ca remplace l'ancienne valeur par zero!!!

Je ne comprends donc pas...Merco de votre aide!
A bientot!
Corentone

EDIT: je suis sous mysql....