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 :

calcul prix sql


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    administrateur système
    Inscrit en
    Mars 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : administrateur système

    Informations forums :
    Inscription : Mars 2004
    Messages : 52
    Points : 58
    Points
    58
    Par défaut calcul prix sql
    Bonjour, j'ai un probleme, je voudrais calculer le prix d'un ensembe. Pour cela j'utilise les tables :

    T_MATERIEL
    T_COMPOSE
    COUTER
    T_TARIF

    je dois ecrire une requete qui calcule le prix composé de plusieur materiel. cad dans la table T_COMPOSE se trouve l' id du materiel compose present dans la table T_MATERIEL ainsi que l'id du materiel utiliser pour faire le materiel composé.
    J'espere que mon expliquation est assaie clair

    Merci d'avance

    http://d.granjard.free.fr/MPD_Catalogue.pdf

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 768
    Points : 52 565
    Points
    52 565
    Billets dans le blog
    5
    Par défaut
    pour t'aider, merci de lire ceci :
    http://www.developpez.net/forums/vie...3d43ddf58ab1f9
    et de fournir les tables et un jeu d'essais !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre du Club
    Profil pro
    administrateur système
    Inscrit en
    Mars 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : administrateur système

    Informations forums :
    Inscription : Mars 2004
    Messages : 52
    Points : 58
    Points
    58
    Par défaut
    j'utilise MS SQL SERVER 2000 :
    voici ci joint le schema physique de donnée : http://d.granjard.free.fr/MPD_Catalogue.pdf

    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
       -- T_MATERIEL: 
    MATERIEL_ID     MATERIEL_REF  TARIF_ID     
    ------  ----------  ------ 
           1                 MA 001              1
           2                 MA 002              2
           3                 MA ENSEMBLE
     
     
    -- T_COMPOSE : 
    MATERIEL_ID    T_M_MATERIEL  
    ------  ----------  ------ 
          3                       1
          3                       2
     
     
    -- T_TARIF: 
    TARIF_ID   TARIF_ACHAT
    ------  ----------  ------ 
     1                   100
     2                   300
     
     
    -- Le résultat attendu : 
    MATERIEL_REF    TARIF_MATERIEL
    ------  ----------  ------ 
    MA 001                     100
    MA 002                     300
    MA ENSEMBLE           400

  4. #4
    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
    Si tu n'as qu'un seul niveau de composition, c'est relativement simple
    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 M.Materiel_Ref AS Materiel_Ref
       , T.Tarif_Achat AS Tarif_Materiel
    FROM T_Materiel AS M
       INNER JOIN T_Tarif AS T
          ON M.Tarif_Id = T.Tarif_Id
    UNION
    SELECT M.Materiel_Ref AS Materiel_Ref
       , SUM(T.Tarif_Achat) AS Tarif_Materiel
    FROM T_Materiel AS M
       INNER JOIN T_Compose AS C
          ON M.Materiel_Id = C.Materiel_Id
       INNER JOIN T_Tarif AS T
          ON C.T_M_Materiel = T.Tarif_Id
    GROUP BY M.Materiel_Ref
    Si tu as plus de niveaux, ça peut commencer à devenir moins facile...
    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.

  5. #5
    Membre du Club
    Profil pro
    administrateur système
    Inscrit en
    Mars 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : administrateur système

    Informations forums :
    Inscription : Mars 2004
    Messages : 52
    Points : 58
    Points
    58
    Par défaut
    oui il y a un deuxieme niveau, certain materiel compose utilise un autre materiel compose. de plus pour chaque produit il y a une quantite

  6. #6
    Membre du Club
    Profil pro
    administrateur système
    Inscrit en
    Mars 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : administrateur système

    Informations forums :
    Inscription : Mars 2004
    Messages : 52
    Points : 58
    Points
    58
    Par défaut
    MERCI Pour votre aide, la requete implique que le TARIF_ID Soit equal a T_MATERIEL_ID.

    entre temps j'ai ecris celle la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Select C.MATERIEL_ID,sum(QUANTITE*TARIF_ACHAT) as Prix 
    from 
    T_COMPOSE as C
    inner join T_MATERIEL as M
    on C.T_MATERIEL_ID = M.MATERIEL_ID 
    inner join T_TARIF as T
    on M.TARIF_ID = T.TARIF_ID
    group by C.MATERIEL_ID
    mais j'arrive pas a inserer la sous requete pour avoir la ref du materiel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT distinct M.MATERIEL_REF
          from T_COMPOSE as C
          inner join T_MATERIEL as M
          on C.MATERIEL_ID = M.MATERIEL_ID
    L'avantage de cette requete premet de ne pas a avoir de faire attention au numero d ID entre TARIF_ID et T_MATERIEL_ID.

  7. #7
    Membre du Club
    Inscrit en
    Avril 2004
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 54
    Points : 65
    Points
    65
    Par défaut
    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
     
    Select
              a.materiel_Id , b.materiel_ref , a.prix
    from
            ( Select 
                        C.MATERIEL_ID , sum(QUANTITE*TARIF_ACHAT) as Prix 
              from 
                        T_COMPOSE as C
              inner join 
                        T_MATERIEL as M
               on 
                        C.T_M_MATERIEL_ID = M.MATERIEL_ID 
              inner join 
                        T_TARIF as T
               on 
                        M.TARIF_ID = T.TARIF_ID
             group by 
                       C.MATERIEL_ID
           ) As a
    inner join
             T_materiel b
    on
             b.materiel_id = a.materiel_id
    Mais tu ne coupes pas à ce que dit al1_24 augmenté d'un niveau suppléméntaire si tu veux etre cohérent sur tes 3 cas possibles

  8. #8
    Membre du Club
    Profil pro
    administrateur système
    Inscrit en
    Mars 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : administrateur système

    Informations forums :
    Inscription : Mars 2004
    Messages : 52
    Points : 58
    Points
    58
    Par défaut
    Merci pour votre aide, je vais mettre un niveau supplemenaitre.

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

Discussions similaires

  1. Calcul vue SQL server 2005
    Par BOUBOU81 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/01/2008, 17h45
  2. Problème calcul sur SQL
    Par madabeer dans le forum Requêtes
    Réponses: 4
    Dernier message: 15/10/2007, 10h18
  3. vba calcul Date sql et formulaire
    Par langelot222 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 14/06/2007, 16h19
  4. update pour calcul pourcentage (SQL SERVER 2000)
    Par meufeu dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/09/2005, 09h04
  5. Problème de calcule en SQL !
    Par FilipeVV dans le forum Langage SQL
    Réponses: 3
    Dernier message: 02/09/2005, 11h45

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