JeuWeb - Crée ton jeu par navigateur
[Résolu] Agrégation avec SQL - 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 : [Résolu] Agrégation avec SQL (/showthread.php?tid=954)



[Résolu] Agrégation avec SQL - jo_link_noir - 07-05-2008

bonjour, je bloque sur une requête, et impossible de lui faire ce que je veux ><
en plus c'est sûrement pas compliquer, je voudrais additionner tous les points des membres d'une alliance

en gros, j'ai une table membre avec 3 champs, membre / alliance / point.
Citation :membre / alliance / point
joueur1 / 1 / 200
joueur2 / 1 / 120
joueur3 / 2 / 150
et à la fin je voudrais avoir :
Citation :alliance / point
1 / 320
2 / 150
j'imagine qu'il faut utiliser SUM mais j'ai pas réussi à séparer les points par alliances Confused

merci d'avance à celui ou celle qui veux bien m'aider


RE: requete sql - Psykose - 07-05-2008

ce ne serait pas un truc du genre ...
Code PHP :
<?php 
$Query
= mysql_query("SELECT alliance, SUM(point) AS Sum_1 FROM table GROUP BY alliance");
$num = 1;

while(
$Fetch = mysql_fetch_array($Query)){
echo
$num . ") l'alliance " . $Fetch['alliance'] . " avec " . $Fetch['Sum_1'];
$num ++
}



RE: requete sql - Cartman34 - 07-05-2008

Après ce que j'ai fais, ceci me semble un jeu d'enfant...
Une petite jointure et le tour est joué.

Voici un petit exemple de calcul de points pour une page de stats.
Code PHP :
<?php 
"SELECT alliance.id AS id, alliance.alliance_name AS name,

SUM(users.points) AS points

FROM alliance

LEFT JOIN users AS users ON users.alliance_id = alliance.id
GROUP BY alliance.id

ORDER BY points DESC"


NB: Imagines toi que j'ia du additionner les 4 types différents de point des planètes + des lunes pour tous les joueurs de chacune des alliances...


RE: requete sql - jo_link_noir - 08-05-2008

Psykose, c'est exactement ça, merci

IGstaff, t'as requête rajoute le nom de l'alliance ? en tout cas quand je test c'est ce que j'obtiens, au final c'est ce que j'allais faire, ça m'évite de m'embrouiller encore avec les jointures, merci

Maintenant je sais quand utiliser GROUP BY ^^


RE: requete sql - Cartman34 - 08-05-2008

Oui mais tu peux tres bien y ajouter ce dont tu as besoin.


RE: requete sql - z3d - 08-05-2008

Juste une question en SQL ANSI les alias servent à factoriser tes commandes ou à nommer un résultat de fonction d'agrégat; alors quel intérêt de rajouter un alias qui contient exactement le même nom que la table si ce n'est perdre du temps ?

Je sais je chipote mais quand même, on dévie de son utilisation première ^^
Code PHP :
<?php 
"SELECT a.id, a.alliance_name AS name, SUM(users.points) AS points
FROM alliance AS a
LEFT JOIN users AS u ON u.alliance_id = a.id
GROUP BY a.id
ORDER BY points DESC"

A part cela la réponse d'IGStaff est excellente.


RE: requete sql - Cartman34 - 08-05-2008

C'est pour préciser de quelle table il vient tout en ayant un nom correct à utiliser.
De plus, c'est un extrait d'un code ou j'additionnais les différents points...
C'est à lui de voir ce qui l'interesse le plus.