Formation Google AnalyticsSavez-vous bien utiliser les outils de mesure d'audience ?
Effectuez-vous un calcul de ROI (Retour sur investissement) pour savoir comment améliorer vos campagnes emarketing ?
Savez-vous utiliser les bons outils pour booster votre taux de transformation ?
La formation Web Analytics de Ranking Metrics, présentée par un expert reconnu officiellement par Google Analytics, vous apportera les réponses à toutes vos questions !
===> Informations et inscriptions.

problème de jointure de table avec SUM et GROUP BY

Poster un nouveau sujet Imprimer cette discussion    Forum -> Développement d'un site Web   Les dernières discussions de ce forum sont disponibles au format RSS
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 
waterjetmedia
Nouveau WRInaute

Inscrit le: 20 Sep 2007
Messages: 9

URL permanente de ce messagePosté 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 ?
 
waterjetmedia Visiter le site web du posteur
erestrebian
WRInaute impliqué
WRInaute impliqué

Inscrit le: 15 Juin 2007
Messages: 366
Localisation: Lettonie

URL permanente de ce messagePosté 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...
 
erestrebian Visiter le site web du posteur
nickargall
WRInaute accro
WRInaute accro

Inscrit le: 13 Juin 2005
Messages: 3697
Localisation: Exilé au Groland à cause de Joe Dalton

URL permanente de ce messagePosté 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 Wink
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 Smile
Bon ok je Arrow

EDIT : argh grillé, mais nos deux versions se rejoignent Smile
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
 
nickargall Visiter le site web du posteur
waterjetmedia
Nouveau WRInaute

Inscrit le: 20 Sep 2007
Messages: 9

URL permanente de ce messagePosté 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 Visiter le site web du posteur
waterjetmedia
Nouveau WRInaute

Inscrit le: 20 Sep 2007
Messages: 9

URL permanente de ce messagePosté 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 Smile

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 Visiter le site web du posteur
waterjetmedia
Nouveau WRInaute

Inscrit le: 20 Sep 2007
Messages: 9

URL permanente de ce messagePosté 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 Sad

je vais aller voir pourquoi... et je vous tiens au jus dans les min qui suivent

un immense merci à vous deux
 
waterjetmedia Visiter le site web du posteur
chtipepere
WRInaute impliqué
WRInaute impliqué

Inscrit le: 08 Jan 2004
Messages: 466

URL permanente de ce messagePosté 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
 
chtipepere Visiter le site web du posteur
waterjetmedia
Nouveau WRInaute

Inscrit le: 20 Sep 2007
Messages: 9

URL permanente de ce messagePosté 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 Smile
 
waterjetmedia Visiter le site web du posteur
erestrebian
WRInaute impliqué
WRInaute impliqué

Inscrit le: 15 Juin 2007
Messages: 366
Localisation: Lettonie

URL permanente de ce messagePosté 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...
 
erestrebian Visiter le site web du posteur
jamalofski
WRInaute discret
WRInaute discret

Inscrit le: 03 Mar 2007
Messages: 76
Localisation: Bordeaux

URL permanente de ce messagePosté 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
 
jamalofski Visiter le site web du posteur
waterjetmedia
Nouveau WRInaute

Inscrit le: 20 Sep 2007
Messages: 9

URL permanente de ce messagePosté 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.
 
waterjetmedia Visiter le site web du posteur
nickargall
WRInaute accro
WRInaute accro

Inscrit le: 13 Juin 2005
Messages: 3697
Localisation: Exilé au Groland à cause de Joe Dalton

URL permanente de ce messagePosté 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
 
nickargall Visiter le site web du posteur
erestrebian
WRInaute impliqué
WRInaute impliqué

Inscrit le: 15 Juin 2007
Messages: 366
Localisation: Lettonie

URL permanente de ce messagePosté 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...)
 
erestrebian Visiter le site web du posteur
waterjetmedia
Nouveau WRInaute

Inscrit le: 20 Sep 2007
Messages: 9

URL permanente de ce messagePosté 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 Very Happy
 
waterjetmedia Visiter le site web du posteur
 
Montrer les messages depuis:   
Revenir en haut    Forum -> Développement d'un site Web Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 1 - 
Connexion
Nom d'utilisateur:    Mot de passe:      Se connecter automatiquement à chaque visite    

CLIQUEZ ICI pour vous inscrire à WebRankInfo (forum, annuaire, outils...)

Connexion

© 2001-2005 phpBB Group, support français
Personnalisation : WebRankInfo ™


 ODP  Firefox  Alsacreations  annuaire webmaster Yagoort