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

SQL Oracle Discussion :

Total de prix sur un article


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2007
    Messages
    390
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 390
    Par défaut Total de prix sur un article
    j'ai essayé de trouver le total de prix des factures pour chaque articlemais j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORA-00937: la fonction de groupe ne porte pas sur un groupe simple.
    la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT  a.ref_article, a.libelle, f.numero_facture, f.date_facture, f.prix, sum(f.prix) as total
    FROM article a , fact_art fa , facture f
    WHERE (a.id_article = fa.id_article)
    and f.id_facture= fa.id_facture
    )t
     
    group by a.ref_article, a.libelle, f.numero_facture, f.date_facture
    Le problème c'est que je n'arrive pas à sélectionner le prix total par article

    Merci pour vos propositions

  2. #2
    Membre Expert Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 452
    Par défaut
    Bonjour,
    Tu sélectionnes f.prix & sum(f.prix)
    or f.prix n'est pas dans la clause group by, il y a donc échec.
    En résumé, toutes les colonnes sélectionnées doivent :
    - soit servir à une fonction d'agrégat max(), min(), sum(), avg(), count()
    - soit figurer dans la clause group by

    Ta requête pourrait ressembler à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT  a.ref_article, a.libelle, f.numero_facture, f.date_facture, sum(f.prix) AS total
    FROM article a , fact_art fa , facture f
    WHERE (a.id_article = fa.id_article)
    AND f.id_facture= fa.id_facture
    GROUP BY a.ref_article, a.libelle, f.numero_facture, f.date_facture
    Si c'est bien ce que tu cherches...
    Car attention, une requête syntaxiquement correcte est toujours susceptible de ramener des résultats... Faut-il encore que les résultats correspondent à ceux qu'on attend

  3. #3
    Membre éclairé
    Inscrit en
    Novembre 2007
    Messages
    390
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 390
    Par défaut
    Merci pour ta réponse.

    J'ai besoin du prix de la facture.

    Exemple :

    pour deux article A et B:

    L'article A a deux factures : f1-12/12/2012-100.5 et f2-25/12/2012-110.5
    L'article B a deux factures : f3-15/12/2012-100 et f4-28/12/2012-110

    Donc comme résultat je cherche comment afficher

    A
    f1-12/12/2012-100.5
    f2-25/12/2012-110.5
    total : 211.

    B
    f3-15/12/2012-100
    f4-28/12/2012-110
    total : 210.

  4. #4
    Membre Expert Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 452
    Par défaut
    Bon, sous toutes réserves car :
    1 - je n'ai pas de base pour tester,
    2 - ça fait plus de 10 ans que je n'ai pas touché à une base, je me suis arrêté avec la 8i !
    3 - que ça me démange de reprendre pour taquiner mon neurone
    4 - et qu'avec ce beau soleil il doit y avoir peu de monde présent pour faire du SQL...

    J'ai un peu modifié la requête pour la faire correspondre à mes vieux souvenir... je ne suis plus sûr de la syntaxe...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    column ByFacture format 9,999.99
    column ByTotal   format 9,999.99
    break sum of a.libelle skip 1
    compute sum of ByFacture on a.libelle
    compute sum of ByTotal on a.libelle
     
    SELECT  a.libelle, a.ref_article, f.numero_facture, f.date_facture, f.prix, ByFacture, ByTotal
    FROM article a , fact_art fa , facture f
    WHERE (a.id_article = fa.id_article)
    AND f.id_facture= fa.id_facture
    GROUP BY a.ref_article, a.libelle, f.numero_facture, f.date_facture
    ORDER BY a.libelle;
    On doit pas être très loin de la solution...
    J'espère que ça te parle un peu...

    PS: Si c'est l'exo à rendre demain sans faute à 9h00, fais l'effort de t'investir un peu... sinon le jour de l'exam tu seras vite largué

  5. #5
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611

  6. #6
    Membre éclairé
    Inscrit en
    Novembre 2007
    Messages
    390
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 390
    Par défaut
    je sais que c'est un peu difficile de trouver la solution mais il y a toujours des solutions pour les problèmes.

    Le problème c'est d'afficher comme suit:

    pour deux article A et B:

    L'article A a deux factures : f1-12/12/2012-100.5 et f2-25/12/2012-110.5
    L'article B a deux factures : f3-15/12/2012-100 et f4-28/12/2012-110

    Donc comme résultat je cherche comment afficher

    A-f1-12/12/2012-100.5
    A-f2-25/12/2012-110.5
    total : 211.

    B-f3-15/12/2012-100
    B-f4-28/12/2012-110
    total : 210.

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

Discussions similaires

  1. totale prix sur un panier
    Par new-root dans le forum Langage
    Réponses: 5
    Dernier message: 13/01/2011, 23h11
  2. Donnez votre avis sur les articles de Developpez.com
    Par Geronimo dans le forum C++Builder
    Réponses: 13
    Dernier message: 14/01/2007, 22h00
  3. Donnez votre avis sur les articles de Developpez
    Par Anomaly dans le forum Contribuez
    Réponses: 37
    Dernier message: 29/05/2006, 21h48

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