IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Aide sur requete PHP vers MySQL


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 52
    Points : 45
    Points
    45
    Par défaut Aide sur requete PHP vers MySQL
    Bonjour,

    Je fait donc un site de résultats sprtifs et mon souci se situe dans les résultats par équipe.
    Je dois afficher les résultats par club et uniquement sur les 3 sportifs qui ont fait les meilleurs résultats pour le club.
    Comme je ne sais pas au départ le nombre de participants pour le club, je tague tous les concurrents à 1 (participant équipe).
    Et c'est là ou j'ai mon problème, voilà ma requete :
    $resulteqdub="SELECT DISTINCT
    result_competition.score1,score2,score3,score4,score5,score6,
    result_competition.score1+score2+score3+score4+score5+score6 as total,
    result_competition.equipe as equipe,
    info_tireur.nom_tireur as nom_tireur,
    info_tireur.prenom_tireur as prenom_tireur,
    info_club.nom_club as nom_club,
    result_competition.id_competition as id_competition
    FROM result_competition,info_tireur,info_club
    WHERE result_competition.id_tireur=info_tireur.id_tireur
    AND result_competition.id_competition=".$_GET['idnomcompetam']."
    AND result_competition.id_club=info_club.id_club
    AND result_competition.equipe=1";
    Mais là tout s'affiche. C'est à dire si un club à 5 representants bin les 5 s'affichent ou si il n'y en a qu'un bin un seul s'affiche.

    Comment puis-je faire pour que trois ( et en l'occurence les trois meilleurs) et seulement trois s'affichent ?

    J'ai tenté le LIMIT 0,3 mais cela ne fonctionne puisqu'il m'affiche la dernière équipe de trois. et pas les autres.

    Merci beaucoup pour votre aide.

    Bon dimanche

    Jean-Mimi

  2. #2
    Invité
    Invité(e)
    Par défaut Re: Aide sur requete PHP vers MySQL


    Citation Envoyé par pounie
    Comment puis-je faire pour que trois ( et en l'occurence les trois meilleurs) et seulement trois s'affichent ?

    J'ai tenté le LIMIT 0,3 mais cela ne fonctionne puisqu'il m'affiche la dernière équipe de trois. et pas les autres.
    le LIMIT est pourtant la bonne solution, seulement tu n'as peut-etre pas classé tes resultats dans l'ordre décroissant. avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ORDER BY total
    LIMIT 0,3
    je pense que ça devrait aller mieux



    dans tous les cas, cette question aurait plus eu sa place dans le forum "Langage SQL", tache de t'en souvenir

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 52
    Points : 45
    Points
    45
    Par défaut
    Merci de ta réponse,

    Comme j'ai l'habitude de venir regarder dans le forum PHP, c'est pour cela que j'ai mis ma question ici.
    Faut-il la déplacer ?

    Alors en fait j'ai pas tout dit car j'avais également fait cette requete :
    $resulteqdub="SELECT DISTINCT
    result_competition.score1,score2,score3,score4,score5,score6,
    result_competition.score1+score2+score3+score4+score5+score6 as total,
    result_competition.equipe as equipe,
    info_tireur.nom_tireur as nom_tireur,
    info_tireur.prenom_tireur as prenom_tireur,
    info_club.nom_club as nom_club,
    result_competition.id_competition as id_competition
    FROM result_competition,info_tireur,info_club
    WHERE result_competition.id_tireur=info_tireur.id_tireur
    AND result_competition.id_competition=".$_GET['idnomcompetam']."
    AND result_competition.id_club=info_club.id_club
    AND result_competition.equipe=1
    ORDER BY result_competition.id_club, total DESC
    LIMIT 0,3"
    Et la cela ne m'affiche que le dernier club qui a présenté une équipe de trois et sqizz tous les autres

    Encore merci pour votre aide

    Jean-Mimi

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Sans trop avoir lu ta requête (qui me semble un brin exotique car j'aurais plutôt mis les scores dans une table à part), j'approuve la solution proposée par torvalds17 : LIMIT et ORDER BY ¤¤¤ DESC. Si cela ne suffit pas, alors c'est que ta requête ne sélectionne pas ce qu'il faut.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $sql = 'SELECT DISTINCT
                 result_competition.score1,score2,score3,score4,score5,score6,
                 result_competition.score1+score2+score3+score4+score5+score6 as total,
                 result_competition.equipe,
                 info_tireur.nom_tireur,
                 info_tireur.prenom_tireur,
                 info_club.nom_club,
                 result_competition.id_competition
              FROM result_competition
              INNER JOIN info_tireur ON result_competition.id_tireur=info_tireur.id_tireur
              INNER JOIN info_club ON result_competition.id_club=info_club.id_club
              WHERE result_competition.id_competition='.intval($_GET['idnomcompetam']).'
                 AND result_competition.equipe=1
              ORDER BY total, result_competition.id_club DESC
              LIMIT 0,3'
    Voici une optimisation de ta dernière requête, au passage. Un seul de tes alias était utile.
    Au passage, ton ORDER BY est-il correct ? Tu sembles vouloir les 3 clubs dont l'identifiant est le plus gros et, si par hasard il y avait deux id_club identiques, alors tu les démarquerais à l'aide de leur score. Le problème est que tu n'auras jamais (je pense) deux identifiants identiques, donc tu ne trieras jamais par score. Je pense que tu souhaites faire l'inverse : tu peux mettre cet identifiant dans le ORDER BY mais après le tri par total.

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 52
    Points : 45
    Points
    45
    Par défaut
    Hello,

    Merci pour la correction de la requete, je vais regarder cela.

    Effectivement jamais deux clubs ont le même id (heureusement).

    Bon cela ne fonctionne toujours pas mais vous êtes à deux à me dire que le problème dans ce cas vient de ma requete, donc je vais fouiller de ce coté là.

    Dès que c'est résolu je clos ma demande. Mais je suis toujours preneur de vos idées.

    Merci
    Jean-Mimi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. erreur sur requete php mysql
    Par Xeuch dans le forum Langage
    Réponses: 2
    Dernier message: 18/03/2013, 10h15
  2. Aide sur requete colonnes vers ligne
    Par jcpreaux76 dans le forum Requêtes
    Réponses: 3
    Dernier message: 26/04/2012, 09h06
  3. [mysql] Aide sur requete (date)
    Par cassy dans le forum Langage SQL
    Réponses: 4
    Dernier message: 29/10/2007, 09h49
  4. Besoin d'aide sur requetes imbriquées simples
    Par Kyti dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/03/2006, 10h52
  5. aide sur requete mysql
    Par digger dans le forum Langage SQL
    Réponses: 8
    Dernier message: 14/01/2006, 10h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo