JeuWeb - Crée ton jeu par navigateur

Version complète : [Résolu] Trouver la variable la plus grande
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Pages : 1 2
Salut à tous,
Je bloque actuellement sur un pti truc stupide. En effet j'ai 4 factions qui peuvent investir dans 4 sites et c'est la faction qui a investi le plus dans un site qui reçoit son affiliation,etc.

Le probleme est que l'argent des factions est calculé selonune addition du don de chaque memebre (il n'y a donc pas de tables prévues à cet effet...)

Comment puis-je faire pour montrer la faction la plus offrante pour chacun des sites, sachant que la forme est dans une table utilisateur :
utilisateur - faction - don vers le site

Merci d'avance,
Psy
Pour avoir la plus grande valeur, tu peux
Code :
SELECT MAX(don) AS don_maximum FROM table;

Tu peux grouper ça par faction pour avoir le plus grand don pour chaque faction :
Code :
SELECT MAX(don) FROM table GROUP BY faction;


Sephi-Chan
Vu qu'il s'agit de récupérer le max d'une somme, j'aurais plutôt dis quelque chose dans ce genre:
Code :
SELECT SUM(don) AS sum_faction FROM table GROUP BY faction ORDER BY sum_faction DESC LIMIT 0,1;

Pas trouvé mieux pour le moment. Dommage que MAX(SUM(...)) ne marche pas. Dans ce cas ça aurait été bien.
J'avais mal cerné l'énoncé.
Effectivement on ne peut pas cumuler deux agrégats car il faudrait pouvoir avoir plusieurs clauses de groupement.


Sephi-Chan
On peut pas faire 2 select imbriqués ??? (d'un autre côté, même après relecture, je pige pas l'énoncé du problème ^^)

(et même si la solution : SELECT SUM(don) AS sum_faction FROM table GROUP BY faction ORDER BY sum_faction DESC LIMIT 0,1; me parait tout à fait satisfaisante.)

Kéké.
C'est bien sympa comme code, mais je crois que je me suis mal exprimé ...
J'aimerais savoir la Faction qui offre le plus (donc la valeur de retour devrait être une Faction ^^).

Une idée ?
Tu as déjà la moitié du travail de fait là... Il suffit de réfléchir un peu pour compléter la requête...

En gros, rajoute "faction" dans les champs à récupérer de la requête que je t'ai donné. La valeur de retour sera de toute façon une table. Autant récupérer le total investit et la faction concernée. Ca te donne ça au final:
Code :
SELECT faction,SUM(don) AS sum_faction FROM table GROUP BY faction ORDER BY sum_faction DESC LIMIT 0,1;
ça marche toujours pas, voila ma fonction (Les différents sites auqel on peux donner de l'argent sont nommés Affil1, Affil2, etc.) :

Code PHP :
<?php 
function BestOffer($Affil, $Faction){
$Number = "Affil" . $Affil;
$SQL_Query = mysql_query("SELECT Faction,SUM($Number) AS Total FROM users GROUP BY faction ORDER BY Total DESC LIMIT 0,1;");
$SQL_Fetch = mysql_fetch_array($SQL_Query);
$var = $SQL_Fetch['Total'];

if(
$var = $Faction){
echo
"Vous êtes la faction la plus offrante envers ce site.";
}
else{
echo
"Vous n'êtes PAS la faction la plus offrante pour ce site.";
}
}

//Utilisation de la fonction :
BestOffer(1 ,$Faction);
BestOffer(2 ,$Faction);
BestOffer(3 ,$Faction);
BestOffer(4 ,$Faction);
//Il me retourne pour tous le message du plus offrant alors que ce n'est pas le cas ...
C'est marrant, j'ai déjà vu cette erreur sur un autre topic y'a pas longtemps mais ça ne venait pas de toi Wink

l'égalité se fait avec "==".

Ta condition "$var = $Faction" sera toujours vrai si l'expression $Faction est vrai (différent de 0).

Après ça tu auras un autre problème. Dans $var tu mets le total des dons effectués et pas la faction gagnante.
L'erreur de gros débile (je savais pour l'égalité, mais je ne l'avais pas vu), il parait que les autres voient mieux nos bêtes erreurs que nous mêmes.

Pour en revenir au sujet :
Effectivement ça retourne le Total et c'est justement ce que je ne veux pas. Je voudrais qu'il retourne le nom de la faction la plus offrante ...
Pages : 1 2