Partage
  • Partager sur Facebook
  • Partager sur Twitter

Sélectionner le meilleur buteur de la semaine en cours

Sujet résolu
    21 novembre 2010 à 19:16:20

    Bonsoir mesdames, bonsoir messieurs.
    Je viens vous trouver pour vous demander votre aide.
    Je voudrais sélectionner le meilleur buteur pour une semaine donnée. Et sans plus attendre, voici mes tables:

    joueurs: jou_id, jou_nom (je ne vous mets pas le reste, c'est inutile)
    buts: but_id, but_mat_id, but_jou_id
    matches: mat_id, mat_semaine

    Il me faut donc l'id et le nom du joueur qui a mis le plus de buts pendant une semaine n. Et je vous avoue que je sèche.
    • Partager sur Facebook
    • Partager sur Twitter
      21 novembre 2010 à 21:19:35

      Salut,

      Je sais pas si tu sais mais on est pas une usine a code quand meme. un s'il te plait serait un plus aussi ;)
      (match ne prends pas de e en fait ^^ )
      SELECT COUNT(DISTINCT j.but_id), j.jou_nom
      FROM joueurs j, buts b, matches m
      WHERE j.jou_id = b.but_jou_id
        AND b.but_mat_id = m.mat_id
        AND mat_semaine = (je sais pas comment ta enregistre tes semaines)
      GROUP BY j.jou_nom
      HAVING MAX(j.but_id)
      


      je suis pas trop sur de moi, mais c'est faisable avec une sous requete sinon
      • Partager sur Facebook
      • Partager sur Twitter
        21 novembre 2010 à 21:54:46

        En supposant que mat_semaine, c'est la date du match (je vois pas ce que tu pourrais stocker autrement) :

        SELECT but_jou_id, COUNT(but_id) AS nbrButs
              FROM joueurs J
        INNER JOIN buts B
                ON J.jou_id = B.but_jou_id
        INNER JOIN matches M
                ON B.but_mat_id = M.mat_id
             WHERE WEEK(M.mat_semaine) = WEEK(NOW())
                   AND YEAR(M.mat_semaine) = YEAR(NOW())
          GROUP BY but_jou_id
          ORDER BY nbrButs DESC
             LIMIT 1;
        
        • Partager sur Facebook
        • Partager sur Twitter
          21 novembre 2010 à 22:34:30

          Oui j'avoue j'ai oublié le "s'il vous plait"; d'un autre côté mon message n'est pas non plus dénué de politesse...
          Le mot match s'écrit matches au pluriel, tout comme sandwiches ;) .

          Sinon au temps pour moi, j'ai oublié de préciser ce que contenait ma colonne "semaine". Tout simplement un chiffre, un bête int. Genre 1, 2, 3, 4 etc... Je stocke dans ma BDD le numéro de la semaine en cours, pour le moment c'est 1, ensuite ce sera 2 etc... Je dois donc faire un bête '[...] WHERE mat_semaine = :semaine_en_cours [...] ', :semaine_en_cours étant une variable que je récupère avant.

          En tous les cas merci à vous deux, je vais tester tout ça.


          Edit: je n'ai pas (encore) testé ta solution luckyboss1, celle de Fayden fonctionne (après du coup avoir remanié ma semaine). Mais je testerai quand même. J'avais quelque chose d'approchant ta solut', Fayden, il me manquait le GROUP BY et le ORDER BY; pour le coup je n'avais pas pensé à ça ^^ .
          • Partager sur Facebook
          • Partager sur Twitter
            21 novembre 2010 à 22:37:04

            La semaine en cours de quelle année ? Ça risque de poser certains problèmes un jour. De plus, stocker la date du match me semble beaucoup plus logique et plus utile.

            Enfin, c'est toi qui vois.
            • Partager sur Facebook
            • Partager sur Twitter
              21 novembre 2010 à 22:38:28

              La semaine de l'année ? ca va pas poser problème ca ?

              match s'écrit matches au pluriel en anglais, et jusqu'à preuve du contraire, on est encore en france... :-°

              grillé
              • Partager sur Facebook
              • Partager sur Twitter
                21 novembre 2010 à 22:48:40

                En fait on s'en fout des années, ce qui importe c'est le numéro de la semaine. Je peux être à la 845e semaine, ça ne pose pas de soucis. Je ne me calque pas sur le temps effectif. La semaine 58 peut durer 2 vraies semaines, par exemple. Aux admins de changer la semaine en cours. C'est le moyen que j'ai trouvé pour pallier à ce problème en fait. Ce n'est pas ce qu'il y a de plus simple, mais au final j'arrive à avoir ce que je veux; et n'ayant pas le temps de faire autre chose pour le moment... (oui je sais c'est mal ^^ ).

                Match est un terme anglais. J'applique donc l'orthographe anglaise, même si, apparemment, matchs est admis depuis 1969. Je ne mets pas de "s" au pluriel à week-end, j'écris donc sandwiches et matches :) .
                • Partager sur Facebook
                • Partager sur Twitter

                Sélectionner le meilleur buteur de la semaine en cours

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown