JeuWeb - Crée ton jeu par navigateur
[SQL] IF dans requete UPDATE: possible?[RESOLU] - 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] IF dans requete UPDATE: possible?[RESOLU] (/showthread.php?tid=1639)



[SQL] IF dans requete UPDATE: possible?[RESOLU] - corentone - 26-08-2007

Bonjour! Encore un probleme avec le SQL...(oui j'essaye de regler mes problemes en SQL, c'est plus rapide qu'en php...Smile )

Pour le moment, voici ma requeteSadElle marche^^)
Code :
UPDATE dj,clubs,soiree SET soiree.nbpersonne_soiree=CEIL(SQRT(dj.reputation_dj*clubs.reputation_club)/(soiree.prixentree_soiree/2)+0.3*clubs.capacite_club) WHERE soiree.id_dj=dj.id_dj AND soiree.id_club=clubs.id_club AND soiree.date_soiree='2007-08-24'

Je veux rajouter un IF (ou CASE), pour que si le nombre de personne(soiree.nbpersonne_soiree) calculé par la formule (racine(reputation_dj*reputation_club)/(prixentree/2)+0.3*capacite_club)est Superieur a la capacité du club(clubs.capacite_club), on entre juste la capacité du club au lieu de la formule.

Voila ce que cela me donne avec une structure IF (d'apres la doc mysql...)
Code :
UPDATE dj,clubs,soiree SET IF CEIL(SQRT(dj.reputation_dj*clubs.reputation_club)/(soiree.prixentree_soiree/2)+0.3*clubs.capacite_club)>clubs.capacite_club THEN soiree.nbpersonne_soiree=clubs.capacite_club ELSE soiree.nbpersonne_soiree=CEIL(SQRT(dj.reputation_dj*clubs.reputation_club)/(soiree.prixentree_soiree/2)+0.3*clubs.capacite_club) END IF WHERE soiree.id_dj=dj.id_dj AND soiree.id_club=clubs.id_club ANDsoiree.date_soiree='2007-08-24'

et voici le joli message d'erreur PhpMyAdmin:
Code :
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF CEIL(SQRT(dj.reputation_dj*clubs.reputation_club)/(soiree.prixentree_soiree/2' at line 1

Merci de votre aide. Cela me semble bizarre et j'ai peur que l'on ne puisse pas de IF dans un update Confused
Corentone


RE: [SQL] IF dans requete UPDATE: possible? - jo_link_noir - 26-08-2007

je pense dire une connerie mais peut-être avec une concaténation...

UPDATE dj,clubs,soiree SET". IF CEIL(SQRT(dj.reputation_dj*clubs.reputation_club)/(soiree.prixentree_soiree/2)+0.3*clubs.capacite_club)>clubs.capacite_club." THEN soiree.nbpersonne_soiree=clubs.capacite_club". ELSE ."soiree.nbpersonne_soiree=CEIL(SQRT(dj.reputation_dj*clubs.reputation_club)/(soiree.prixentree_soiree/2)+0.3*clubs.capacite_club) WHERE soiree.id_dj=dj.id_dj AND soiree.id_club=clubs.id_club ANDsoiree.date_soiree='2007-08-24'


RE: [SQL] IF dans requete UPDATE: possible? - nemesis_elite - 26-08-2007

Oui c'est une connerie, Smile
C'est pas pour être méchant, bien sûr !

Code PHP :
<?php 
UPDATE dj
,clubs,soiree
SET soiree
.nbpersonne_soiree=
CASE
WHEN CEIL(SQRT(dj.reputation_dj*clubs.reputation_club)/(soiree.prixentree_soiree/2)+0.3*clubs.capacite_club) > clubs.capacite_club THEN clubs.capacite_club
ELSE CEIL(SQRT(dj.reputation_dj*clubs.reputation_club)/(soiree.prixentree_soiree/2)+0.3*clubs.capacite_club)
END
WHERE soiree
.id_dj=dj.id_dj
AND soiree.id_club=clubs.id_club
AND soiree.date_soiree='2007-08-24'

Il se fait tard, alors pardon si ce n'est pas ça Sad

NemeSiS_eliTe, qui va faire dodo ^^


RE: [SQL] IF dans requete UPDATE: possible? - denisc - 26-08-2007

Plus rien à dire. Ce qu' a écrit nemesis_elite est correct... pour M$SQL... Je sais pas si ça marche sur MySQL, mais... pourquoi pas Wink


RE: [SQL] IF dans requete UPDATE: possible? - corentone - 26-08-2007

Merci Nemesis_Elite Smile Pas d'erreur sous PHPmyadmin Smile, je vais donc la tester dans le jeu mais ca m'a l'air d'etre exactement ce que je recherchais Big Grin

Allé Hop +1 de reput, meme si ca sert a rien ce truc, si ca peut faire joli^^

Encore merci Smile


RE: [SQL] IF dans requete UPDATE: possible? - nemesis_elite - 26-08-2007

Eh bien, ce fut un plaisir de t'aider Smile

Et merci pour le +1 de réputation. ^^