JeuWeb - Crée ton jeu par navigateur

Version complète : [SQL] IF dans requete UPDATE: possible?[RESOLU]
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
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
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'
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 ^^
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
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
Eh bien, ce fut un plaisir de t'aider Smile

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