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 :

sql requête sur deux tables avec cumul..


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5
    Points : 5
    Points
    5
    Par défaut sql requête sur deux tables avec cumul..
    Bonjour,
    J'ai du mal a réaliser une requête concernant deux tables
    c'est un petite base de donnée pour gérer mes confitures -- ne riez pas, la gourmandise c'est comme ça --
    J'ai une table de fabrication avec
    lfab_codeft le code de la confiture exemple CP pour coing-Pomme
    lfab_date pour la date
    lfab_comp ici le code du composant que j'ai mis
    lfab_qtecomp enfi sa quantité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    TABLE `lignefab` (
    `lfab_codeft` enum('CHA','CP') NOT NULL,
    `lfab_date` date NOT NULL,
    `lfab_comp` enum('CHA LISS','CO LISS','CO MORC','PO LISS','PO MORC','SUCR DEM','SU LISS','VANILLE') NOT NULL,
    `lfab_qtecomp` float NOT NULL,
    `lfab_commentaire` varchar(25) NOT NULL,
    PRIMARY KEY (`lfab_codeft`,`lfab_date`,`lfab_comp`)
    )
    Une autre table donne pour chaque composant sa famille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    TABLE `tablecomp` (
    `tcomp_code` enum('CHA LISS','CO LISS','CO MORC','PO LISS','PO MORC','SUCR DEM','SU LISS','VANILLE') NOT NULL,
    `tcomp_famille` varchar(8) NOT NULL,
    PRIMARY KEY (`tcomp_code`),
    KEY `tcomp_famille` (`tcomp_famille`)
    )
    Elles sont donc liées par les champs
    `lignefab`.`lfab_comp` et `tablecomp`.`tcomp_code`

    J'ai effectué cette requete simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT `lignefab`.`lfab_codeft` , `lignefab`.`lfab_date` , `lignefab`.`lfab_comp` , `tablecomp`.`tcomp_code` , `lfab_qtecomp` ,`tablecomp`.`tcomp_famille`
    FROM `lignefab` , `tablecomp`
    WHERE `lignefab`.`lfab_comp` = `tablecomp`.`tcomp_code`
    ORDER BY `lignefab`.`lfab_codeft` ASC
    qui me donne ceci (un extrait)
    CHA 2009-11-08 CHA LISS CHA LISS 46 Fruit
    CHA 2009-11-08 SUCR DEM SUCR DEM 38 Sucre
    CHA 2009-11-08 VANILLE VANILLE 23 Autre
    CP 2009-10-15 CO MORC CO MORC 9 Fruit
    CP 2009-10-15 PO LISS PO LISS 4 Fruit
    CP 2009-10-15 SUCR DEM SUCR DEM 6 Sucre
    Mais en fait je souhaite cumuler les quantités par famille de composition
    par exemple
    CP 2009-10-15 13 Fruit
    CP 2009-10-15 6 Sucre

    J'ai essayé plein de group by mais comme le code famille est sur la deuxième table je n'y parviens pas.

    Auriez-vous une piste, un exemple. Je n'ai pas trouvé d'exemple de ce type malgré mes n et n recherches

    Merci d'avance

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Quelque chose comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT  lgf.lfab_codeft
        ,   lgf.lfab_date
        ,   SUM(lgf.lfab_qtecomp)
        ,   cmp.tcomp_famille
    FROM    lignefab    AS lgf
        INNER JOIN
            tablecomp   AS cmp
            ON   lgf.lfab_comp = cmp.tcomp_code
    GROUP BY lgf.lfab_codeft
        ,   lgf.lfab_date
        ,   cmp.tcomp_famille
    ORDER BY lgf.lfab_codeft ASC
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Merci al1_24.
    Je n'arrive pas à faire fonctionner avec tes conseils. trop fort pour môaa
    Mais je cherche à comprendre si si
    Finalement on m'a aider à ficeler cela ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT `lignefab`.`lfab_date`,`lignefab`.`lfab_codeft`, sum(`lfab_qtecomp`) ,`tablecomp`.`tcomp_famille` 
    FROM `lignefab` , `tablecomp`
    WHERE `lignefab`.`lfab_comp` = `tablecomp`.`tcomp_code`
    GROUP BY `tablecomp`.`tcomp_famille`, `lignefab`.`lfab_codeft`
    ORDER BY `lignefab`.`lfab_date` desc,`lignefab`.`lfab_codeft` ASC
    et ça me va
    Les résultats ont l'air bon....

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    J'ai compris le req que tu m'as proposé.
    Mais en fait pourquoi cette différence entre les deux méthodes .
    Que faut-il privilégier ? et pourquoi finalement ?
    En tout cas merci pr cette "leçon"

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

Discussions similaires

  1. Requête sur deux tables avec incrément de champ
    Par LB dans le forum Langage SQL
    Réponses: 12
    Dernier message: 15/11/2014, 17h41
  2. Requête sur deux tables avec fonction COUNT
    Par islande dans le forum Langage SQL
    Réponses: 13
    Dernier message: 12/08/2013, 16h06
  3. Réponses: 6
    Dernier message: 11/07/2012, 14h52
  4. Requête SQL simple sur deux tables
    Par Contrec dans le forum Langage SQL
    Réponses: 6
    Dernier message: 19/02/2012, 17h26
  5. Réponses: 10
    Dernier message: 11/08/2009, 14h43

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