Partage
  • Partager sur Facebook
  • Partager sur Twitter

FROM SELECT

    23 mai 2018 à 17:31:21

    Alors Bosoir,

    j'ai une question très banale mais j'arrive pas à trouvez une réponse.

    est ce qu'on peut écrire comme ça

    SELECT C.titre

    From Club C , (SELECT Id, COUNT( Distinct (Id_ins) as compte)

                          FROM Inscription) I

    WHERE C.Id = I.Id

    AND I.compte = (SELECT MAX(I.compte)

                              FROM I)

    Merci d'avance je veux savoir si c'est juste comme ça

    ps: j'ai le tableau Inscription et Club, je sais seulement la théorie c'est pourquoi je peux pas essayer.

    • Partager sur Facebook
    • Partager sur Twitter
      23 mai 2018 à 18:16:36

      Bonjour,

      PhoenixxSand a écrit:

      est ce qu'on peut écrire comme ça

      Oui, on peut écrire comme ça ... mais reste à savoir ce que tu veux que "ça" fasse ...

      Quel est ton besoin ? Tu veux le club avec le plus d'inscriptions ?

      -
      Edité par Benzouye 23 mai 2018 à 18:16:43

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        24 mai 2018 à 9:40:03

        Non et pour deux raison.

        La première, c'est à cause des noms des objets (tables, colonnes, etc...), car une sous requête ( SELECT ... FROM ... ) ne peut pas être accessible en dehors de cette sous requête.

        Don ton cas, le problème se pose sur "SELECT MAX ( I.compte ) FROM I" où I est défini dans la requête principale, et donc non accessible à cette sous requête.

        La seconde, c'est parce que la sous requête "SELECT Id, COUNT( DISTINCT( Id_ins ) ) FROM Inscription" est fausse, et ne peut pas être exécuté (sauf sur MySQMerde qui préfère renvoyer un résultat aléatoire, et donc faux), car Id est dans le SELECT, mais pas dans le GROUP BY implicite crée par l'appèle de la fonction d’agrégat COUNT.

        Ainsi, cette requête ne traduit aucune demande. Ca ressemble à un truc du genre "Afficher les titres des club pour lequel le nombre total d'inscription tout club confondu est égal au nombre maxium d'inscription". Ca n'a ni queue ni tête.

        Donc, même question que Benzyoue: Quel es ton besoin ?

        • Partager sur Facebook
        • Partager sur Twitter
          24 mai 2018 à 10:12:57

          Sebajuste a écrit:

          Ca ressemble à un truc du genre "Afficher les titres des club pour lequel le nombre total d'inscription tout club confondu est égal au nombre maxium d'inscription". Ca n'a ni queue ni tête.

          Moi j'avais résumé comme ceci :

          Benzouye a écrit:

          le club avec le plus d'inscriptions

          :D

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            24 mai 2018 à 11:50:44

            Toi, tu as tenté de retrouver le besoin d'origine.

            Moi, j'ai essayé de décrire la requête telle qu'elle est présenté. On vois clairement qu'il y a comme une légère différence :p

            • Partager sur Facebook
            • Partager sur Twitter
              24 mai 2018 à 19:50:15

              merci pour vos réponses.

              oui c''est le but de mon requete.

              alors c'est juste ou pas xD.

              si c'est pas juste est ce que vous pouvez me dire ou est ma faute.

              • Partager sur Facebook
              • Partager sur Twitter
                24 mai 2018 à 23:04:28

                Non, on t'as dis que ce n'était pas bon, et que avait besoin de plus d'information.

                Quel est ton besoin ?

                Et donne nous la structure de tes tables: colonnes, clef primaires et clef étrangères

                • Partager sur Facebook
                • Partager sur Twitter
                  25 mai 2018 à 9:00:01

                  Si le besoin est :

                  Benzouye a écrit:

                  le club avec le plus d'inscriptions

                  Avec MySQL/MariaDB tu peux faire :

                  SELECT C.titre, COUNT(*) AS nb_inscriptions
                  FROM
                  	Club C
                  		INNER JOIN Inscription I
                  			ON C.Id = I.Id
                  GROUP BY C.titre
                  ORDER BY nb_inscriptions DESC
                  LIMIT 1

                  Avec un autre SGBD il faudra utiliser TOP 1 ou ROWNUM = 1 à la place du LIMIT ...

                  -
                  Edité par Benzouye 25 mai 2018 à 9:00:25

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                    25 mai 2018 à 9:04:07

                    Benzouye a écrit:

                    			ON C.Id = I.Id

                    C'est cette jointure qui me pose problème, et c'est pour ça que je n'ai pas donné de solution. Il n’aurait pas tenté de faire une jointure sur deux clef primaire par hasard ? au lieu d’utiliser une clef étrangère ?

                    Personnellement, je ne m'avancerais pas avant d'avoir reçu la structure de ses tables.

                    • Partager sur Facebook
                    • Partager sur Twitter

                    FROM SELECT

                    × 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