Problème requête, conflit GROUP BY et ORDER BY ??

benoit_

Habitué
Bonjour à tous. J'ai un petit soucis, mais ça m'énerve.
J'ai 4 tables qui me permettent d'afficher des stats pour des joueurs de foot : TFstats, TFpays, TFcompetitions et TFstats_postes. Je récupère le nombre de matchs, de buts, le championnat, le pays, le poste, la saison ...

Voici ma requête :
SELECT TFstats.saison, TFstats.club, TFstats.nm_club, TFcompetitions.titre, TFpays.drapeau, TFpays.pays, TFpays.id, TFstats.Europe, TFstats.Selection, TFstats.MJtit, TFstats.BUTS, TFstats.id_poste, TFstats.pret, TFstats.IdChampPhpL, TFstats.StatDateDepart, TFstats.StatDateArrivee
FROM TFstats, TFpays, TFcompetitions, TFstats_postes
WHERE
(TFstats.id_poste=TFstats_postes.id
AND TFcompetitions.id_pays=TFpays.id
AND TFcompetitions.catid=TFstats.id_champ2
AND TFstats.id='$id_joueur'
AND TFstats_postes.LPF_famille='1')
OR
(TFstats.id_poste=TFstats_postes.id
AND TFcompetitions.id_pays=TFpays.id
AND TFcompetitions.catid=TFstats.id_champ2
AND TFstats.id='$id_joueur'
AND TFstats_postes.LPF_famille='11')
GROUP BY TFstats.StatDateDepart, TFstats.StatDateArrivee, TFstats.club, TFcompetitions.id_pays
ORDER BY TFstats.StatDateDepart DESC, TFstats.StatDateArrivee DESC, TFstats.saison DESC, TFcompetitions.Niveau DESC
Elle fonctionne bien, mon petit soucis est juste au niveau du tri. Le "TFcompetitions.Niveau DESC" n'est pas pris en compte. A la place, il tri par TFstats.id2 (par date de remplissage pour faire plus simple).
Merci de votre aide ...
 

batchy

Grand Maître
Déjà tu pourrai simplifier ta requette en utilisant le OR plus intelligement.

Ensuite, je ne comprend pas pourquoi le SGBD ne te crie pas dessus :
Lorsque tu fait un GROUP BY XXXX.A
tu ne peux pas trier par XXXX.B, puisqu'il peut y avoir plusieurs valeurs de B correspondant à une valeur de A....
 

benoit_

Habitué
Mouais, je crois que mon group by était pas forcément bien vu. Je pense que ma solution consisterait plus à inclure une sous requête...
Du coup je supprime mon group by.
Pour l'optimisation, c'est bien ça que tu voulais dire :
Code:
SELECT TFstats.saison, TFstats.club, TFstats.nm_club, TFcompetitions.titre, TFpays.drapeau, TFpays.pays, TFpays.id, TFstats.Europe, TFstats.Selection, TFstats.MJtit, TFstats.BUTS, TFstats.id_poste, TFstats.pret, TFstats.IdChampPhpL, TFstats.StatDateDepart, TFstats.StatDateArrivee
FROM TFstats, TFpays, TFcompetitions, TFstats_postes
WHERE 
TFstats.id_poste=TFstats_postes.id
AND TFcompetitions.id_pays=TFpays.id 
AND TFcompetitions.catid=TFstats.id_champ2
AND TFstats.id='$id_joueur'
AND (TFstats_postes.LPF_famille='1' OR TFstats_postes.LPF_famille='11')
ORDER BY TFstats.StatDateDepart DESC, TFstats.StatDateArrivee DESC, TFstats.saison DESC, TFcompetitions.Niveau
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 131
Messages
6 717 980
Membres
1 586 384
Dernier membre
ChelseaKahn
Partager cette page
Haut