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 :

Somme avec une requete sql


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 15
    Points : 8
    Points
    8
    Par défaut Somme avec une requete sql
    Salut Tout le monde

    Voici mon problème que j'ai.

    J'ai la requete suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT tblAchatsMP.no_item, Sum(tblAchatsMP.quantite) AS SommeDequantite
    FROM tblAchatsMP
    WHERE (((tblAchatsMP.no_item) In (SELECT tblRequisitions.no_item FROM tblRequisitions 
    where  no_item in (SELECT tblRequisitions.no_item
    FROM tblRequisitions
    WHERE (((tblRequisitions.date_requisition)<=#1/23/2005#))
    GROUP BY tblRequisitions.no_item;)
    group by  tblRequisitions.no_item;)) AND ((tblAchatsMP.dateachatmp)<=#1/23/2005#))
    GROUP BY tblAchatsMP.no_item;
    qui me donne la somme de quantite d'achats selon une date donne pour une requisition mais mon probleme est que je dois donner aussi la somme pour la quantite requise selon la requete suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT tblRequisitions.no_item, Sum(tblRequisitions.quantite) AS SommeDequantite
    FROM tblRequisitions
    WHERE (((tblRequisitions.date_requisition)<=#1/23/2005#))
    GROUP BY tblRequisitions.no_item;
    Comment je peux faire pour transposer la somme quantite requise dans la requete d achats car je dois seulement avoir une requete pour passer mon parametre date. Le lien entre les deux requetes est le no_item.

    je sais plus ou donner de la tete pourtant ca semble etre simple mon pb qui devient pour moi compliquer.

    fred s.

  2. #2
    Membre actif Avatar de TheRussian
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 200
    Points : 241
    Points
    241
    Par défaut
    Bonjour,

    en faisant un UNION des 2 requetes :

    Code : 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
     
    SELECT tblAchatsMP.no_item, Sum(tblAchatsMP.quantite) AS SommeDequantite, '' 
    FROM tblAchatsMP 
    WHERE (((tblAchatsMP.no_item) In (SELECT tblRequisitions.no_item FROM tblRequisitions 
    where  no_item in (SELECT tblRequisitions.no_item 
    FROM tblRequisitions 
    WHERE (((tblRequisitions.date_requisition)<=#1/23/2005#)) 
    GROUP BY tblRequisitions.no_item;) 
    group by  tblRequisitions.no_item;)) AND ((tblAchatsMP.dateachatmp)<=#1/23/2005#)) 
    GROUP BY tblAchatsMP.no_item
     
    UNION
     
    SELECT tblRequisitions.no_item, '',Sum(tblRequisitions.quantite) AS SommeDequantite 
    FROM tblRequisitions 
    WHERE (((tblRequisitions.date_requisition)<=#1/23/2005#)) 
    GROUP BY tblRequisitions.no_item;

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 15
    Points : 8
    Points
    8
    Par défaut group by avec UNION
    ca semble bien fonctionne mais est il possible de faire une GROUP BY avec UNION

    Code : 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
    SELECT tblAchatsMP.no_item, Sum(tblAchatsMP.quantite) AS SommeDequantite, ''
    FROM tblAchatsMP
    WHERE (((tblAchatsMP.no_item) In (SELECT tblRequisitions.no_item FROM tblRequisitions
    where  no_item in (SELECT tblRequisitions.no_item
    FROM tblRequisitions
    WHERE (((tblRequisitions.date_requisition)<=#1/23/2005#))
    GROUP BY tblRequisitions.no_item;)
    group by  tblRequisitions.no_item;)) AND ((tblAchatsMP.dateachatmp)<=#1/23/2005#))
    GROUP BY tblAchatsMP.no_item
     
    UNION
     
    SELECT tblRequisitions.no_item, '',Sum(tblRequisitions.quantite) AS SommeDequantite
    FROM tblRequisitions
    WHERE (((tblRequisitions.date_requisition)<=#1/23/2005#))
    GROUP BY tblRequisitions.no_item;

  4. #4
    Futur Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 15
    Points : 8
    Points
    8
    Par défaut GROUP BY avec UNION
    salut

    pour etre plus claire faire un group by par no_item pour avoir seulement une quantite d achat et une quantite de requesition

  5. #5
    Futur Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 15
    Points : 8
    Points
    8
    Par défaut Resultat de UNION
    no_item qteachatsmp qterequesition
    B-1 352
    B-1 580
    B-2 405
    B-2 675

    Comment faire pour avoir seulement une ligne avec les qteachatsmp et achatreq avec un seul no_tiem ?

    requete :

    Code : 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
    SELECT tblAchatsMP.no_item, Sum(tblAchatsMP.quantite) AS SommeDequantite, ''
    FROM tblAchatsMP
    WHERE (((tblAchatsMP.no_item) In (SELECT tblRequisitions.no_item FROM tblRequisitions
    where  no_item in (SELECT tblRequisitions.no_item
    FROM tblRequisitions
    WHERE (((tblRequisitions.date_requisition)<=#1/23/2005#))
    GROUP BY tblRequisitions.no_item;)
    group by  tblRequisitions.no_item;)) AND ((tblAchatsMP.dateachatmp)<=#1/23/2005#))
    GROUP BY tblAchatsMP.no_item
     
    UNION
     
    SELECT tblRequisitions.no_item, '',Sum(tblRequisitions.quantite) AS SommeDequantite
    FROM tblRequisitions
    WHERE (((tblRequisitions.date_requisition)<=#1/23/2005#))
    GROUP BY tblRequisitions.no_item;

  6. #6
    Futur Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 15
    Points : 8
    Points
    8
    Par défaut Resultat de UNION
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    no_item   qteachatsmp   qterequesition
    B-1                               352
    B-1          580
    B-2                               405
    B-2           675
    Comment faire pour avoir seulement une ligne avec les qteachatsmp et achatreq avec un seul no_tiem ?

    requete :

    Code : 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
    SELECT tblAchatsMP.no_item, Sum(tblAchatsMP.quantite) AS SommeDequantite, ''
    FROM tblAchatsMP
    WHERE (((tblAchatsMP.no_item) In (SELECT tblRequisitions.no_item FROM tblRequisitions
    where  no_item in (SELECT tblRequisitions.no_item
    FROM tblRequisitions
    WHERE (((tblRequisitions.date_requisition)<=#1/23/2005#))
    GROUP BY tblRequisitions.no_item;)
    group by  tblRequisitions.no_item;)) AND ((tblAchatsMP.dateachatmp)<=#1/23/2005#))
    GROUP BY tblAchatsMP.no_item
     
    UNION
     
    SELECT tblRequisitions.no_item, '',Sum(tblRequisitions.quantite) AS SommeDequantite
    FROM tblRequisitions
    WHERE (((tblRequisitions.date_requisition)<=#1/23/2005#))
    GROUP BY tblRequisitions.no_item;
    [/code]

  7. #7
    Membre actif Avatar de TheRussian
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 200
    Points : 241
    Points
    241
    Par défaut
    Avec un FULL JOIN cela devrait passer, pour un UNION je ne suis pas sur.

    Code : 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
     
    select coalesce(table1.no_item,table2.no_item),  sum( qteachatsmp),   sum(qterequesition)
    from  (SELECT tblAchatsMP.no_item, Sum(tblAchatsMP.quantite) AS   qteachatsmp
    FROM tblAchatsMP 
    WHERE (((tblAchatsMP.no_item) In (SELECT tblRequisitions.no_item FROM tblRequisitions 
    where  no_item in (SELECT tblRequisitions.no_item 
    FROM tblRequisitions 
    WHERE (((tblRequisitions.date_requisition)<=#1/23/2005#)) 
    GROUP BY tblRequisitions.no_item;) 
    group by  tblRequisitions.no_item;)) AND ((tblAchatsMP.dateachatmp)<=#1/23/2005#)) 
    GROUP BY tblAchatsMP.no_item ) as table1
      FULL JOIN 
    (SELECT tblRequisitions.no_item, Sum(tblRequisitions.quantite) AS qterequesition 
    FROM tblRequisitions 
    WHERE (((tblRequisitions.date_requisition)<=#1/23/2005#)) 
    GROUP BY tblRequisitions.no_item) as table2
     ON table1.no_item = table2.no_item
    group by coalesce(table1.no_item,table2.no_item)
    Ceci si ton SGBDR accepte les sous-requetes et COALESCE c'est pour SQLServer, sur Oracle c'est NVL.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 163
    Points : 80
    Points
    80
    Par défaut
    virtuose: est-ce que tu pourrais mettre la structures des tables en présence et quelques données permettant de tester STP.
    J'aimerais faire des tests pour m'exercer et ton problème a l'air sympa mais la façon dont tu le poses me laisse perplexe.

  9. #9
    Futur Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 15
    Points : 8
    Points
    8
    Par défaut Donnée pour une inventaire
    Salut noinneh

    Voici les données que j'ai pour mon problème

    J'ai les tables suivent tblAchatsMp, tblRequisition et tblMatieresPremieres

    tblAchatsMp, elle va comme suit :
    Code : 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
    23
    24
    25
    26
    27
     
    idachatmp	dateachatmp	    no_factureno_item   quantite  cout_unitaire
    1    		2005-1-1 00:00:00   G-4438    B-1       200,00    4,95      
    2    		2005-1-1 00:00:00   G-4438    B-2       225,00    3,25      
    3    		2005-1-1 00:00:00   G-4438    B-3       135,00    4,99      
    4    		2005-1-1 00:00:00   17856     BA-1      32,00     19,50     
    5    		2005-1-1 00:00:00   G-4438    C-2       22,00     22,99     
    6    		2005-1-1 00:00:00   G-4438    C-1       52,00     27,99     
    7    		2005-1-1 00:00:00   23102     F-1       10,00     49,95     
    8    		2005-1-1 00:00:00   23102     P-1       4,00      125,85    
    9    		2005-1-1 00:00:00   18489     R-1       12,00     62,50     
    10   		2005-1-7 00:00:00   G-4596    B-1       380,00    4,89      
    11   		2005-1-7 00:00:00   G-4596    B-2       450,00    3,18      
    12   		2005-1-7 00:00:00   G-4596    B-3       320,00    4,81      
    13   		2005-1-7 00:00:00   18489     BA-1      80,00     19,25     
    14   		2005-1-7 00:00:00   G-4596    C-2       65,00     24,05     
    15   		2005-1-7 00:00:00   G-4596    C-1       50,00     28,95     
    16   		2005-1-7 00:00:00   23457     F-1       22,00     50,75     
    17   		2005-1-7 00:00:00   23457     P-1       10,00     143,93    
    18   		2005-1-7 00:00:00   18489     R-1       80,00     63,95     
    19   		2005-1-19 00:00:00  18513     BA-1      70,00     19,25     
    20   		2005-1-27 00:00:00  G-4603    BC-1      60,00     9,48      
    21   		2005-1-27 00:00:00  G-4603    BC-2      225,00    6,78      
    22   		2005-1-27 00:00:00  G-4603    BC-3      120,00    13,98     
    23   		2005-1-27 00:00:00  G-4603    BC-4      450,00    9,98      
    24   		2005-1-27 00:00:00  G-4603    RC-1      60,00     40,18     
    25   		2005-1-27 00:00:00  18542     BA-1      25,00     19,75
    Poursuivons avec la table tblRequesitions
    Code : 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
    23
    24
    25
    26
    27
    28
     
    "idrequisition"	"date_requisition"	"no_lot"	"no_requisition"	"no_item"	"quantite"
    3	2005-01-15	"1213"	122,00	"B-1"	150,00
    6	2005-01-15	"1214"	123,00	"B-1"	112,00
    9	2005-01-15	"1215"	124,00	"B-1"	90,00
    52	2005-01-28	"1222"	134,00	"B-1"	52,00
    10	2005-01-15	"1213"	125,00	"B-2"	180,00
    16	2005-01-15	"1214"	126,00	"B-2"	132,00
    1	2005-01-15	"1213"	122,00	"B-3"	140,00
    2	2005-01-15	"1213"	122,00	"C-1"	20,00
    4	2005-01-15	"1214"	123,00	"B-3"	120,00
    5	2005-01-15	"1214"	123,00	"C-1"	16,00
    7	2005-01-15	"1215"	124,00	"B-3"	78,00
    8	2005-01-15	"1215"	124,00	"C-1"	12,00
    11	2005-01-15	"1213"	125,00	"C-2"	36,00
    12	2005-01-15	"1213"	125,00	"BA-1"	40,00
    13	2005-01-15	"1213"	125,00	"F-1"	10,00
    14	2005-01-15	"1213"	125,00	"P-1"	5,00
    15	2005-01-15	"1213"	125,00	"R-1"	40,00
    17	2005-01-15	"1214"	126,00	"C-2"	22,00
    18	2005-01-15	"1214"	126,00	"BA-1"	26,00
    19	2005-01-15	"1214"	126,00	"F-1"	4,00
    20	2005-01-15	"1214"	126,00	"P-1"	4,00
    21	2005-01-15	"1214"	126,00	"R-1"	26,00
    22	2005-01-15	"1215"	127,00	"B-2"	93,00
    23	2005-01-15	"1215"	127,00	"C-2"	16,00
    24	2005-01-15	"1215"	127,00	"BA-1"	18,00
    25	2005-01-15	"1215"	127,00	"F-1"	6,00
    et la tblMatieresPremieres qui permet de savoir la quantite inventaire besoin en stock.
    Code : 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
    23
    24
    25
     
    idmp	       no_item   description              unite          qte_min
    1              B-1       2 X 4 X 12 pieds         Chaque         50,00     
    2              B-2       2 X 4 X 8 pieds          Chaque         50,00     
    3              B-3       2 X 6 X 8 pieds          Chaque         30,00     
    4              BA-1      Bardeaux asphalte        Paquet (32 p2) 10,00     
    17             BB-1      Ensemble de balançoires  Chaque         1,00      
    10             BC-1      4 X 4 X 8 pieds cèdre    Chaque         25,00     
    11             BC-2      2 X 4 X 10 pieds cèdre   Chaque         20,00     
    12             BC-3      2 X 8 X 16 pieds cèdre   Chaque         20,00     
    13             BC-4      1 1/4 X 6 X 12 pieds cèdrChaque         30,00     
    15             BC-5      5 X 5 X 16 pieds cèdre   Chaque         12,00     
    16             BC-6      2 X 5 X 16 pieds cèdre   Chaque         15,00     
    6              C-1       Contreplaqué 5/8         Chaque         10,00     
    5              C-2       Contreplaqué 1/2         Chaque         10,00     
    19             CC-9      Céramique (Alto-12)      Pied carré     0,00      
    7              F-1       Fenêtre 3 X 4            Chaque         2,00      
    22             IP-1      Installation de 9 pieux  Contrat        0,00      
    21             LM-1      Laine minérale           Paquet         0,00      
    8              P-1       Porte et poignée         Chaque         2,00      
    18             PP-1      Porte patio 6 pieds      Chaque         0,00      
    9              R-1       Revêtement Vinyle        Boîte (50 p2)  5,00      
    14             RC-1      Rampe en cèdre           Chaque         2,00      
    20             RC12-1    Revêtement cèdre 12 piedsChaque         0,00      
    23             V-1       2" x 4"                  chaque         25,00
    Ce que je veux c'est un rapport afin de si je dois commander ou pas des no_item selon une quantite demandé. Je dois trouver le somme des qte achatmp selon une date_achatmp (somqteachatmp), la somme qte requisition (sommeqtereq) aussi selon une date_requisition. Je trouve la qte restant qui va comme suit : somqteachatmp - sommeqtereq = solde restant. avec ce solde restant, je dois verifier si c est plus petit que la quantite minimum qu on doit avoir, si c est plus petit je dois lui indiquer dans commander. A remarque que dans la table tblRequisitions si on demande a partir du 2005-01-23 (date_requisition à= 2005-01-23)la somme de la qte requisition sera 352 et non 404 pour le no_item B-1. c est pour ca qu il faut entre une date. Ce que je veux c est une requete qui permet de passer une date.

    Je sais pas si c est assez claire mais bon je voila.

Discussions similaires

  1. Réponses: 11
    Dernier message: 09/08/2007, 14h27
  2. Somme dans une requete SQL
    Par LP-mpascolo dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/04/2007, 10h26
  3. Problème avec une requete SQL sous access
    Par Luther13 dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 14/12/2005, 10h39
  4. [VB.NET] Remplir une ComboBox avec une requete sql
    Par graphicsxp dans le forum Windows Forms
    Réponses: 6
    Dernier message: 22/03/2005, 15h29
  5. [ORACLE][SQL] procedure sous delphi avec une requete SQL
    Par nivet dans le forum Bases de données
    Réponses: 2
    Dernier message: 17/11/2004, 13h43

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