|
Voir le sujet précédent :: Voir le sujet suivant
|
| Auteur |
Message |
| |
|
waterjetmedia Nouveau WRInaute
Inscrit le: 20 Sep 2007 Messages: 9
|
Posté le : Jeu Sep 20, 2007 12:20 Sujet du message: problème de jointure de table avec SUM et GROUP BY |
|
|
Bonjour,
Je m'occupe du site d'un club de foot et j'aimerais afficher les 5 meilleurs buteurs du club pour la saison en cours et pour cela je dois joindre les informations contenues dans 4 tables que je résume pour faire simple:
- players (player_id, player_lastname, player_firstname)
- calendrier (calendrier_id, datedumatch, saison_id, adversaire)
- saison (saison_id, saison_name, saison_start, saison_finish
- stats (stats_id, buts, player_id, calendrier_id)
à l'heure actuelle j'arrive à afficher les 5 meilleurs buteurs... mais de l'histoire en faisant ma requête uniquement sur la table stats. J'arrive à récupérer le player_id et le nombre de buts inscrits au total.
Ma requête actuelle :
<?php
$req = mysql_query("SELECT SUM(stats.stat_B) as buts, stats.player_id FROM stats GROUP BY player_id ORDER BY buts DESC limit 5");
?>
J'affiche mes résultats de cette manière (sans l'html dans mon exemple pour simplifier)
<?php while($reponse = mysql_fetch_array($req)){ ?>
<?php echo $reponse['player_id'].' : '.$reponse['buts'].'<br>';?>
<?php } ?>
Mais mon résultat bah c'est le player_id et son total de buts, toutes saisons confondues.
Idéalement j'aimerais afficher les 5 meilleurs buteurs pour la saison en cours avec leur nom et leur total de buts, mais jignore comment joindre ces tables là. J'ai essayer de faire un truc du style WHERE players.player_id LIKE stats.player_id mais ça ne fonctionne pas.
Quelqu'un a-t-il une idée ? |
|
| |
|
 |
erestrebian WRInaute impliqué

Inscrit le: 15 Juin 2007 Messages: 366 Localisation: Lettonie
|
Posté le : Jeu Sep 20, 2007 12:31 Sujet du message: problème de jointure de table avec SUM et GROUP BY |
|
|
| Code: |
$sql="select p.player_lastname, p.player_firstname, count(buts)
from players p, calendrier c, saison s, stats st
where p.player_id=st.player_id
and st.calendrier_id=c.calendrier_id
and c.saison_id=s.saison_id
and saison_start<".time()."
and saison_finisth>".time()."
order by count(buts) DESC
limit 0,5"; |
je pense que ça devrait ressemble à quelque chose comme ça mais bon je suis pas vraiment sûr de ce que contient exactement tes champs... |
|
| |
|
 |
nickargall WRInaute accro

Inscrit le: 13 Juin 2005 Messages: 3697 Localisation: Exilé au Groland à cause de Joe Dalton
|
Posté le : Jeu Sep 20, 2007 12:41 Sujet du message: problème de jointure de table avec SUM et GROUP BY |
|
|
Bonjour
je te laisse écrire les SELECT
| Code: |
$query="SELECT SUM(stats.stat_B) as buts, ... WHERE `players.player_id`=`stats.player_id` AND
`stats.calendrier_id`=`calendrier.calendrier_id` AND
`calendrier.saison_id`=`saison.saison_id` AND `saison.saison_id`='".$variable_identifiant_saison."' ORDER BY buts DESC LIMIT 0,5";
$req = mysql_query($query);
|
peut être ?
ps : en passant la requete dans une variable, tu peux ensuite facilement l'afficher via un ECHO et la reprendre directement dans ton phpmyadmin qui te donnera plus d'infos sur ce qui va pas.
Me connaissant, m'étonnerait que ma proposition fonctionne mais peut-être te donnera-t-elle une piste ?
Sinon, je suis ouvert aux échanges de liens football avec mon www
Bon ok je
EDIT : argh grillé, mais nos deux versions se rejoignent
RE-EDIT : la proposition de estrebian est meilleure, elle va chercher le nom des buteurs.
Dernière édition par nickargall le Jeu Sep 20, 2007 12:44; édité 1 fois |
|
| |
|
 |
waterjetmedia Nouveau WRInaute
Inscrit le: 20 Sep 2007 Messages: 9
|
Posté le : Jeu Sep 20, 2007 12:43 Sujet du message: problème de jointure de table avec SUM et GROUP BY |
|
|
| erestrebian a écrit: |
| Code: |
$sql="select p.player_lastname, p.player_firstname, count(buts)
from players p, calendrier c, saison s, stats st
where p.player_id=st.player_id
and st.calendrier_id=c.calendrier_id
and c.saison_id=s.saison_id
and saison_start<".time()."
and saison_finisth>".time()."
order by count(buts) DESC
limit 0,5"; |
je pense que ça devrait ressemble à quelque chose comme ça mais bon je suis pas vraiment sûr de ce que contient exactement tes champs... |
count(buts) ? pas SUM(buts) ? |
|
| |
|
 |
waterjetmedia Nouveau WRInaute
Inscrit le: 20 Sep 2007 Messages: 9
|
Posté le : Jeu Sep 20, 2007 12:47 Sujet du message: problème de jointure de table avec SUM et GROUP BY |
|
|
J'ai essayé la chose suivante et à présent, plus rien ne s'affiche
j'ai essayé juste de joindre stats et players comme table. en fait le champ pour mes buts c'est "stat_B" et non "buts"
<?php
$req = mysql_query("SELECT players.player_lastname,
players.player_id,
stats.player_id,
SUM(stat_B) as buts
FROM stats, players
WHERE stats.player_id = player.player_id
GROUP BY player_id
ORDER BY buts DESC
limit 5");
?> |
|
| |
|
 |
waterjetmedia Nouveau WRInaute
Inscrit le: 20 Sep 2007 Messages: 9
|
Posté le : Jeu Sep 20, 2007 12:59 Sujet du message: problème de jointure de table avec SUM et GROUP BY |
|
|
je viens d'essayer la proposition de eestrebian que je remercie, j'ai toujours rien qui s'affiche
je vais aller voir pourquoi... et je vous tiens au jus dans les min qui suivent
un immense merci à vous deux |
|
| |
|
 |
chtipepere WRInaute impliqué

Inscrit le: 08 Jan 2004 Messages: 466
|
Posté le : Jeu Sep 20, 2007 13:01 Sujet du message: problème de jointure de table avec SUM et GROUP BY |
|
|
Exécute tes requêtes dans phpmyadmin, et pas par php, tu gagneras du temps pour debugger.
Pour la jointure (si ta version de mysql est supérieure à 3), utilises plutôt JOIN (INNER, LEFT ou RIGHT selon tes besoins).
Explications ici.
Bon courage |
|
| |
|
 |
waterjetmedia Nouveau WRInaute
Inscrit le: 20 Sep 2007 Messages: 9
|
Posté le : Jeu Sep 20, 2007 13:03 Sujet du message: problème de jointure de table avec SUM et GROUP BY |
|
|
ok je vais lire les règles de join que tu m'as proposé et checker avec phpmyadmin
et ensuite... on verra  |
|
| |
|
 |
erestrebian WRInaute impliqué

Inscrit le: 15 Juin 2007 Messages: 366 Localisation: Lettonie
|
Posté le : Jeu Sep 20, 2007 13:14 Sujet du message: problème de jointure de table avec SUM et GROUP BY |
|
|
c'est quoi stats_B dans ta table?
sinon c'est bien un sum et pas un count qu'il faut faire... |
|
| |
|
 |
jamalofski WRInaute discret

Inscrit le: 03 Mar 2007 Messages: 76 Localisation: Bordeaux
|
Posté le : Jeu Sep 20, 2007 13:32 Sujet du message: problème de jointure de table avec SUM et GROUP BY |
|
|
essaye ca :
| Code: |
SELECT players.player_lastname, players.player_firstname, sum(stats.buts) as totalButs
FROM stats, players
WHERE stats.player_id = player.player_id
GROUP BY players.player_lastname, players.player_firstname
ORDER BY totalButs DESC
limit 5 |
|
|
| |
|
 |
waterjetmedia Nouveau WRInaute
Inscrit le: 20 Sep 2007 Messages: 9
|
Posté le : Jeu Sep 20, 2007 13:38 Sujet du message: problème de jointure de table avec SUM et GROUP BY |
|
|
hello,
alors ça a fonctionné de la manière suivante :
SELECT * , SUM( stat_B ) AS buts
FROM stats, players, schedule, seasons
WHERE stats.player_id LIKE players.player_id
AND stats.schedule_id LIKE schedule.schedule_id
AND seasons.season_id LIKE schedule.season_id
AND seasons.season_current LIKE '1'
GROUP BY stats.player_id
ORDER BY buts DESC
LIMIT 5
un immense merci à vous tous. Super classe ce forum que je ne connaissais pas. |
|
| |
|
 |
nickargall WRInaute accro

Inscrit le: 13 Juin 2005 Messages: 3697 Localisation: Exilé au Groland à cause de Joe Dalton
|
Posté le : Jeu Sep 20, 2007 14:14 Sujet du message: problème de jointure de table avec SUM et GROUP BY |
|
|
| Tant mieux. Euh, pouruqoi "LIKE" et pas "=" dans tes requêtes ? A mon avis demander de "=" au lieu des "LIKE" marchera aussi bien et demandera moins de ressources à la base SQL |
|
| |
|
 |
erestrebian WRInaute impliqué

Inscrit le: 15 Juin 2007 Messages: 366 Localisation: Lettonie
|
Posté le : Jeu Sep 20, 2007 14:27 Sujet du message: problème de jointure de table avec SUM et GROUP BY |
|
|
| si tu n'as pas besoin de tous les champs, sélectionne seulement sur ceux qui t'intéressent (nom, prénom...) |
|
| |
|
 |
waterjetmedia Nouveau WRInaute
Inscrit le: 20 Sep 2007 Messages: 9
|
Posté le : Jeu Sep 20, 2007 15:36 Sujet du message: problème de jointure de table avec SUM et GROUP BY |
|
|
ok, je vais essayer cela pour rendre plus léger ma requête.
merci  |
|
| |
|
 |
| |
|
|