Partage
  • Partager sur Facebook
  • Partager sur Twitter

requête à la base de données

group by dans une table

    16 mai 2018 à 18:35:15

    Bonsoir,

    j'ai une table dans une base de données, je veux faire un affichage de tous les champs en groupant ces derniers par rapport à un champ. je m'explique.

    la table colis(id, frais, nomexp, numexp,nomdest, numdest, numero_facture, date_creation), on a des colis qui ont le même numero_facture mais pour des frais différents. mon problème est d'afficher tous les champs mais avec le min(frais)pour les colis ayant le même numero_facture.

    voici ce que j'ai fait:

    SELECT * FROM `colis` WHERE frais in (SELECT MIN( colis.frais)`colis` GROUP BY colis.numero_facture) mais le résultat est comme celui SELECT * FROM `colis`. 

    Merci d'avance pour votre aide

    • Partager sur Facebook
    • Partager sur Twitter
      16 mai 2018 à 19:30:03

      Il faut passer par une jointure, puis seulement faire le GROUP BY par numéro de facture, et ressortir le MIN de frais pour chaque groupe.

      https://openclassrooms.com/courses/concevez-votre-site-web-avec-php-et-mysql/les-jointures-entre-tables

      -
      Edité par Sebajuste 16 mai 2018 à 19:30:12

      • Partager sur Facebook
      • Partager sur Twitter
        17 mai 2018 à 9:17:10

        Bonjour,

        Tu manque apparemment de formation en SQL ...

        Pour compléter le message de Sebajuste, je te conseille fortement la lecture du cours MySQL (cf. ma signature).

        • Partager sur Facebook
        • Partager sur Twitter
        Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
          17 mai 2018 à 10:08:10

          Désolé mais jai pas toujours de solution:(. j'obtiens toujours le resultat du SELECT * FROM colis
          Sebajuste voici ce que j'ai pu faire avec le lien que tu m'as conseillé, Après une bonne dose de lecture
           j'ai voulu utiliser la jointure mais je ne trouvais pas sur quel champ le faire 
          SELECT id,  nomexp, numexp, nomdest, numdest, date_creation, frais, numero_facture
          FROM colis
          WHERE numero_facture IN 
          (
                  SELECT A.numero_facture
                  FROM 
                    (
                      SELECT MIN(colis.frais) as frais, colis.numero_facture
                      FROM colis
                      GROUP BY colis.numero_facture
                     ) A
               )
          AND frais IN 
          (
                  SELECT B.frais
                  FROM 
                    (
                      SELECT MIN(colis.frais) as frais, colis.numero_facture
                      FROM colis
                      GROUP BY colis.numero_facture
                     ) B
               )
          Merci!!!

          -
          Edité par Carolou 17 mai 2018 à 17:07:56

          • Partager sur Facebook
          • Partager sur Twitter

          requête à la base de données

          × 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