Partage

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

Vous êtes demandeur·se d'emploi ?
Sans diplôme post-bac ?

Devenez Développeur·se web junior

Je postule
Formation
courte
Financée
à 100%
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

Staff 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).

Seul on va plus vite ... Ensemble on va plus loin ! A maîtriser : Conception BDDMySQL, HTML/CSS, 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

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é.
  • Editeur
  • Markdown