JeuWeb - Crée ton jeu par navigateur
SQL: requete Update avec SELECT integré. - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : SQL: requete Update avec SELECT integré. (/showthread.php?tid=1492)

Pages : 1 2


RE: SQL: requete Update avec SELECT integré. - NicoMSEvent - 23-07-2007

si tu as remplacé le CEIL(...) par IFNULL(...,0) ça devrais résoudre tous tes problemes...


RE: SQL: requete Update avec SELECT integré. - corentone - 25-07-2007

J'ai testé ta requete...elle mets bien a jour le dj concerné, mais mets malheuresement tous les autres djs à O d'experience!!!
C'est vraiment bizarre et m'embetes beaucoup!

Merci encore NicoMSEvent!


RE: SQL: requete Update avec SELECT integré. - corentone - 08-08-2007

UP!
Je viens de rentrer de vacances donc je me replonge dedans...et cela ne marche toujours pas :'(!

pourquoi le dj.xp_dj=dj.xp_dj + (SELECT...) >>peut il donner une valeur de zero au final à dj.xp_dj? (sachant que les valeurs ne sont pas nulles a la base!)

Un pro du sql? Merci de votre aide.

Corentone

EDIT: le IFNULL n'est pas en cause car si je remplace la valeur de remplacement si c'est nul (ici 0) par un autre nombre quelconque, toutes les xp sont bien aussi remises à 0 Sad


RE: SQL: requete Update avec SELECT integré. - corentone - 14-08-2007

Bon eh bien...sans doute que NicomsEvent est en vacances...Tongue
Merci a toi NicomsEvent!

Finalement, j'ai fait comme ceci: (c'est moche, mais si vous avez un moyen de faire plusieurs update sur des champs avec des valeurs differentes....)

Code PHP :
<?php 
$sql_reput
= 'SELECT dj.id_dj,CEIL(SUM(objet.xp_objet *3 * ( soiree.reussite_soiree +50 ))/100) AS gain
FROM dj
LEFT JOIN soiree ON soiree.id_dj=dj.id_dj
LEFT JOIN matos ON matos.id_dj = dj.id_dj
LEFT JOIN objet ON objet.id_objet = matos.id_objet
WHERE soiree.date_soiree = \''
.date("Y-m-d",time()-86400).'\'
GROUP BY dj.id_dj'
;
$req_reput = mysql_query($sql_reput)or die('Erreur SQL !<br />'.$sql_reput.'<br />'.mysql_error());



while(
$maj = mysql_fetch_array($req_reput))//Pas optimisé^^ sur conseil de la couanne :p
{$sql_reput2 = 'UPDATE dj SET xp_dj=xp_dj+'.$maj['gain'].' WHERE id_dj='.$maj['id_dj'];
$req_neput2 = mysql_query($sql_reput2)or die('Erreur SQL !<br />'.$sql_reput2.'<br />'.mysql_error());}

Voilou...Merci encore, et si quelque entrevoit une solution quand meme, proposez Tongue

Corentone


RE: SQL: requete Update avec SELECT integré. - NicoMSEvent - 20-08-2007

En effet, j'étais en vacances Wink

Je pense t'avoir donné une solution propre... si ça ne marche pas, essaye de voir si tu n'as pas un problème autre part dans ton code. N'ai pas peur d'imprimer des variables temporaire, ça aide énormément pour le débogage (débugging pour les franglais :p )


RE: SQL: requete Update avec SELECT integré. - corentone - 21-08-2007

NicoMSEvent a écrit :En effet, j'étais en vacances Wink

Je pense t'avoir donné une solution propre... si ça ne marche pas, essaye de voir si tu n'as pas un problème autre part dans ton code. N'ai pas peur d'imprimer des variables temporaire, ça aide énormément pour le débogage (débugging pour les franglais :p )

ta solution était superbe....mais ne marchais pas, en passant par phpmyadmin!
J'aurais voulu que cela marche :heuuu:, mais le dieu du sql a refusé cela...
J'ai toujours testé ton script dans la fonction SQL de phpmyadmin, en remplissant a la main la date, et niet, cela mettait a 0 ce que je ne voulais pas et pourtant ca faisait bien laction pour ce que je désirais...


RE: SQL: requete Update avec SELECT integré. - NicoMSEvent - 21-08-2007

et ceci alors?
Code :
UPDATE dj SET dj.xp_dj=dj.xp_dj+IFNULL(
SELECT IFNULL(SUM(objet.xp_objet*3*(soiree.reussite_soiree+50) )/100 ,0),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
)
je suppose que là ça devrait marcher... en effet, je n'avais pas pris en compte le fait que la requete ne pouvait retourner aucun élément...