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 :

Comment modifie une requete pour avoir des sommes?


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Comment modifie une requete pour avoir des sommes?
    Bonjour je recherche a modifie ma requete afin d'avoir la sommes de Est_vendu_prix pour chaque numero de produit et je ne sais pas si cela sera possible si je veux garder tout les autres champs!!
    Voici ma requete :

    SELECT Caisse_Num, Caisse_CB, Caisse_GR, Caisse_AutresCartes, Caisse_Date, Debit_Num, Debit_Litre, Debit_CA, Debit_Impaye, Carburant_Num, VP_Num, VP_Prix, Ordre, Produit_Num, Est_Vendu_Prix, Produit_Num, Produit_Lib, FactureE_Num, FactureE_Date, FactureE_Montant, FactureE_Montant, Client_Num, Client_Nom, FactureG_Num, FactureG_Date, FactureG_Montant, FactureG_NomClient

    FROM CAISSE, DEBIT_TPV, VP, EST_VENDU, PRODUIT, FACTURE_ESSENCE, CLIENT, FACTURE_GARAGE

    WHERE CAISSE.Caisse_Num = DEBIT_TPV.Caisse_Num AND
    CAISSE.Caisse_Num = VP.Caisse_Num AND
    CAISSE.Caisse_Num = EST_VENDU.Caisse_Num AND
    CAISSE_Caisse_Num = FACTURE_ESSENCE.Caisse_Num AND
    EST_VENDU.Produit_Num = PRODUIT.Produit_Num AND
    FACTURE_ESSENCE.Client_Num = CLIENT.Client_Num AND
    CAISSE.Caisse_Num = FACTURE_GARAGE.Caisse_Num AND
    Caisse_Num = x ;

    Merci de votre aide par avance

  2. #2
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Salut, et bienvenue sur ce forum,

    C'est tout à fait possible, via l'opérateur d'aggrégation SUM, ce qui requiert de faire un GROUP BY sur les champs non aggrégés

    Ex : imagine que cette requête te ramène des montant par facture et n° de ligne de facture :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT FacNum, LigNum, LigMnt
      FROM Facture F INNER JOIN Ligne L ON F.FacNum = L.FacNum
     WHERE ...
    Alors la requête suivante te donnera le montant de chaque facture (cumul des lignes) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT FacNum, SUM(LigMnt)
      FROM Facture F INNER JOIN Ligne L ON F.FacNum = L.FacNum
     WHERE ...
     GROUP BY FacNum
    Je te laisse adapter sur ton cas de figure, tu nous dis si ça fonctionne
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 4
    Points : 1
    Points
    1
    Par défaut c'est pas ca:S J'suis un debutant dsl
    Voici ma nouvelle requete mais ca ne marche pas j'ai un message d'erreur me disans que Caisse_Num peut appartenir a plusieur table alors que j'ai bien mis les alias!

    [
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Caisse_Num, Caisse_CB, Caisse_GR, Caisse_AutresCartes, Caisse_Date, Debit_Num, Debit_Litre, Debit_CA, Debit_Impaye, Carburant_Num, VP_Num, VP_Prix, Ordre, Produit_Num, Produit_Num, Produit_Lib, FactureE_Num, FactureE_Date, FactureE_Montant, FactureE_Montant, Client_Num, Client_Nom, FactureG_Num, FactureG_Date, FactureG_Montant, FactureG_NomClient, Sum(Est_Vendu_Prix)
    FROM CAISSE AS C, DEBIT_TPV AS D, VP AS V, EST_VENDU AS E, PRODUIT AS P, FACTURE_ESSENCE AS FE, CLIENT AS CL, FACTURE_GARAGE AS FG
    WHERE C.Caisse_Num=D.Caisse_Num And C.Caisse_Num=V.Caisse_Num And C.Caisse_Num=E.Caisse_Num And C.Caisse_Num=FE.Caisse_Num And E.Produit_Num=P.Produit_Num And FE.Client_Num=CL.Client_Num And C.Caisse_Num=FG.Caisse_Num And Caisse_Num=3
    GROUP BY Produit_Num;
    merci encore

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 4
    Points : 1
    Points
    1
    Par défaut oula dsl
    revoici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    SELECT Caisse_Num, Caisse_CB, Caisse_GR, Caisse_AutresCartes, Caisse_Date, Debit_Num, Debit_Litre, Debit_CA, Debit_Impaye, Carburant_Num, VP_Num, VP_Prix, Ordre, Produit_Num, Produit_Num, Produit_Lib, FactureE_Num, FactureE_Date, FactureE_Montant, FactureE_Montant, Client_Num, Client_Nom, FactureG_Num, FactureG_Date, FactureG_Montant, FactureG_NomClient, Sum(Est_Vendu_Prix)
     
    FROM CAISSE C, DEBIT_TPV D, VP V, EST_VENDU E, PRODUIT P, FACTURE_ESSENCE FE, CLIENT CL, FACTURE_GARAGE FG
     
    WHERE C.Caisse_Num = D.Caisse_Num AND
    C.Caisse_Num = V.Caisse_Num AND
    C.Caisse_Num = E.Caisse_Num AND
    C.Caisse_Num = FE.Caisse_Num AND
    E.Produit_Num = P.Produit_Num AND
    FE.Client_Num = CL.Client_Num AND
    C.Caisse_Num = FG.Caisse_Num AND
    Caisse_Num = 3
    GROUP BY Produit_Num ;

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 091
    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 091
    Points : 30 870
    Points
    30 870
    Par défaut
    Il faut préciser la source de la colonne dès qu'il peut y avoir un doute, même si on est certain que la valeur sera la même...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT C.Caisse_Num, Caisse_CB, Caisse_GR, Caisse_AutresCartes, Caisse_Date, Debit_Num, Debit_Litre, Debit_CA, Debit_Impaye, Carburant_Num, VP_Num, VP_Prix, Ordre, Produit_Num, Produit_Num, Produit_Lib, FactureE_Num, FactureE_Date, FactureE_Montant, FactureE_Montant, Client_Num, Client_Nom, FactureG_Num, FactureG_Date, FactureG_Montant, FactureG_NomClient, Sum(Est_Vendu_Prix)
    
    FROM CAISSE C, DEBIT_TPV D, VP V, EST_VENDU E, PRODUIT P, FACTURE_ESSENCE FE, CLIENT CL, FACTURE_GARAGE FG
    
    WHERE C.Caisse_Num = D.Caisse_Num AND
    C.Caisse_Num = V.Caisse_Num AND
    C.Caisse_Num = E.Caisse_Num AND
    C.Caisse_Num = FE.Caisse_Num AND
    E.Produit_Num = P.Produit_Num AND
    FE.Client_Num = CL.Client_Num AND
    C.Caisse_Num = FG.Caisse_Num AND
    C.Caisse_Num = 3
    GROUP BY Produit_Num ;
    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.

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 4
    Points : 1
    Points
    1
    Par défaut euh....
    Et bien j'ai bien mis la source je n'ai mm pas utiliser les alias et j'ai toujours la mm erreur que Caisse_Num peut appartenir a plusieurs champs citer dans la clause FROM

    SELECT Caisse_Num, Caisse_CB, Caisse_GR, Caisse_AutresCartes, Caisse_Date, Debit_Num, Debit_Litre, Debit_CA, Debit_Impaye, Carburant_Num, VP_Num, VP_Prix, Ordre, Produit_Num, Produit_Num, Produit_Lib, FactureE_Num, FactureE_Date, FactureE_Montant, FactureE_Montant, Client_Num, Client_Nom, FactureG_Num, FactureG_Date, FactureG_Montant, FactureG_NomClient, Sum(Est_Vendu_Prix)

    FROM CAISSE C, DEBIT_TPV D, VP V, EST_VENDU E, PRODUIT P, FACTURE_ESSENCE FE, CLIENT CL, FACTURE_GARAGE FG

    WHERE CAISSE.Caisse_Num = DEBIT_TPV.Caisse_Num AND
    CAISSE.Caisse_Num = VP.Caisse_Num AND
    CAISSE.Caisse_Num = EST_VENDU.Caisse_Num AND
    CAISSE.Caisse_Num = FACTURE_ESSENCE.Caisse_Num AND
    EST_VENDU.Produit_Num = PRODUIT.Produit_Num AND
    FACTURE_ESSENCE.Client_Num = CLIENT.Client_Num AND
    CAISSE.Caisse_Num = FACTURE_GARAGE.Caisse_Num AND
    CAISSE.Caisse_Num = 3
    GROUP BY Produit_Num ;

  7. #7
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    regarde mieux ce qui t'a été proposé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT C.Caisse_Num ...

  8. #8
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 091
    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 091
    Points : 30 870
    Points
    30 870
    Par défaut
    Il faut préciser la table source aussi dans le SELECT
    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.

  9. #9
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Le Group By doit s'appliquer à TOUS les champs non concernés par un opérateur d'aggrégation :

    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
     
    SELECT Caisse_Num, Caisse_CB, Caisse_GR, [...], FactureG_NomClient, Sum(Est_Vendu_Prix)
      FROM CAISSE C,
           DEBIT_TPV D,
           VP V, 
           EST_VENDU E, 
           PRODUIT P, 
           FACTURE_ESSENCE FE,
           CLIENT CL, 
           FACTURE_GARAGE FG
     WHERE C.Caisse_Num = D.Caisse_Num AND
           C.Caisse_Num = V.Caisse_Num AND
           C.Caisse_Num = E.Caisse_Num AND
           C.Caisse_Num = FE.Caisse_Num AND
           E.Produit_Num = P.Produit_Num AND
           FE.Client_Num = CL.Client_Num AND
           C.Caisse_Num = FG.Caisse_Num AND
           Caisse_Num = 3
     GROUP BY Caisse_Num, Caisse_CB, Caisse_GR, [...], FactureG_NomClient;
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/06/2010, 21h18
  2. Réponses: 10
    Dernier message: 26/03/2008, 22h37
  3. Besoin d'aide avec une requete pour récupérer des hyperliens
    Par scaleo dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 21/12/2007, 12h56
  4. Réponses: 3
    Dernier message: 16/07/2007, 19h41
  5. Réponses: 21
    Dernier message: 01/08/2006, 20h44

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