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

Langage SQL Discussion :

Requete somme sql + affichage


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 23
    Points : 11
    Points
    11
    Par défaut Requete somme sql + affichage
    Bonjour à toutes et tous, j'ai beau chercher, ca marche pas

    Voici mes données :

    PRODUITS
    id, name, barcode

    POINTS
    id, barcode, prix


    Dans la table "produits", un code barre correspond à un nom
    Dans la table "points", le code barre du produit a un prix, mais il peut y avoir plusieurs prix pour le meme code barre.

    En gros :

    PRODUITS
    orange 01
    pomme 02
    fraise 03

    POINTS
    01 10
    01 2
    02 5
    03 5
    03 6
    03 4

    Je voudrais faire des stats, à savoir afficher code barre, nom et la somme des prix pour chaque produits, ici l'affichage final serait :

    01 - orange - 12
    02 - pomme - 5
    03 - fraise - 15

    Mais je bloque Merci pour votre aide, en esperant que j'ai été clair et pas trop brouillon ^^

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    C'est assez basique comme problème !
    => Fonctions SUM et GROUP BY

    Qu'as-tu essayé de faire ?

    C'est bizarre d'additionner des prix !
    En faire la moyenne encore pourquoi pas mais additionner les différents prix d'un produit !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    Pfffff j'avais pas mis le GROUP BY donc forcement j'avais toujours des erreurs....
    Là ca fonctionne ^^ Merci bien ! Voici le code :


    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    $query = "SELECT barcode, SUM(prix) FROM points GROUP BY prix ";
     
     
    $result = mysql_query($query);
     
     
    while($row = mysql_fetch_array($result)){
    $barcode = $row[0];
    $prix= $row[1];
     
     
    echo "<table border width='150%' class='align_gauche'>
        <tr>
          <td  width='70'>$barcode</td>
          <td  width='70'>$prix</td>
     
     
                 <br>
        </tr>
      </table>";
     
    }

    Par contre comment me rajouter le nom des code barre à savoir "name" de l'autre table et le bien faire le lien ?
    J'ai essayé $query = "SELECT points.barcode, SUM(points.prix), produits.name FROM points, produits GROUP BY points.prix";
    et des variantes mais en vain...

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Ce n'est pas GROUP BY prix mais GROUP BY barcode !

    Citation Envoyé par noobs Voir le message
    Par contre comment me rajouter le nom des code barre à savoir "name" de l'autre table et le bien faire le lien ?
    J'ai essayé $query = "SELECT points.barcode, SUM(points.prix), produits.name FROM points, produits GROUP BY points.prix";
    et des variantes mais en vain...
    Il faut faire une jointure entre la requête et la table PRODUITS mais avec la syntaxe normalisée depuis 1992, c'est mieux !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT p.barcode, p.name, t.somme_prix
    FROM produits AS p
    INNER JOIN (
      SELECT barcode, SUM(prix) AS somme_prix
      FROM points 
      GROUP BY barcode
    ) AS t ON t.barcode = p.barcode
    Au passage, c'est l'identifiant du produit (id) et non pas le barcode qui devrait être en clé étrangère dans la table points. Et la jointure devrait donc se faire sur cette colonne.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    Vraiment super, cela fonctionne tres bien.
    Par contre je n'ai pas bien compris l'histoire de la clé étrangère

    Il est vrai que GROUP BY barcode fonctionne, mais si je change par name ou prix, ce qui m'arrangerai le plus, cela ne marche plus

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Il est vrai que GROUP BY barcode fonctionne, mais si je change par name ou prix, ce qui m'arrangerai le plus, cela ne marche plus
    GROUP BY barcode signifie : "grouper toutes les lignes ayant une valeur de barcode".

    Ce que tu veux, c'est bien la somme des prix par barcode ?
    => par = groupés par = GROUP BY

    Grouper par prix alors que tu veux la somme des prix n'a aucun sens !
    Quant à grouper par name (du produit), dans la mesure où chaque produit n'a qu'un name et qu'un barcode et qu'il n'y a pas deux produits avec le même name, tu peux faire plus rapide en modifiant jointure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT p.barcode, p.name, SUM(prix) AS somme_prix
    FROM produits AS p
    INNER JOIN points AS t ON p.barcode = t.barcode
    GROUP BY p.barcode, p.name

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    Oui je me suis mal exprimé, en fait je voudrais trier par "somme" (de prix donc) de la plus haute à la plus basse, et j'ai confondu GROUP BY et trier.

    Donc un petit ORDER BY somme_montant DESC à la fin et tout est ok

    Un grand merci à vous pour les explications

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

Discussions similaires

  1. Affichage SOMME SQL dans une formulaire
    Par Simouha dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/07/2014, 19h41
  2. Requete SQL : affichage en fonction de la date
    Par kemiolek dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 26/05/2008, 16h59
  3. [SQL] affichage d'une requete SQL avec un echo (donnée unique)
    Par khamett dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/10/2007, 20h03
  4. [SQL] Affichage d'une requete SQL
    Par djinko dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 22/10/2006, 12h58
  5. [SQL] affichage en cas de requete ne rapportant pas d'enregistrement
    Par ph_anrys dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 12/07/2006, 10h19

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