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 :

J'y arrive pas niveau requete


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2
    Points : 1
    Points
    1
    Par défaut J'y arrive pas niveau requete
    SGBD Mysql:

    Voilà dans la base il y a deux tables: l'une ou le chiffre d'affaire est enregistré, l'autre ou les commisions par individu sont enregistrés pour une période, exemple A touchera 4.5 % sur le CA si il à été signé entre une période donnée.

    ex: table pourcentages
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    scm_num scm_util_login scm_agence_affect scm_date_effet scm_date_fin scm_pourcentage
    1 	31 	Bordeaux 	2000-01-01 	2999-01-01 	9
    2 	31 	Paris  	           2000-01-01 	2005-09-30 	4.5
    3 	31 	Paris     	2005-10-01 	2999-01-01 	9
    4 	31 	Brest   	2000-01-01 	2005-09-30 	4.5
    ex table CA

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ca_num ca_hono  ca_agence_ville  ca_date_sign
    1           50000      Paris                 2005-10-23
    2           10000      Paris                 2005-09-05
    3           50000      Paris                 2005-09-03
    Par exemple si j'ai besoin de calculer le pourcentage rémunéré de CA pour Paris sur l'année, il y aura l'enregistrement 1 de la table CA à 9% et les autres à 4.5%.

    J'aimerais grace à une requete faire ce calcul

    par exemple de 2005-01-01 à 2005-12-01 pour Paris et utilisateur 31:

    5000*9 + 10000*4.5 + 50000*4.5


    -----------------

    J'ai éssayé d'éfféctuer une jointure sur l'élément commun qui est le nom de l'agence mais mon résultat est faux (multiplié par 2) je pense que cette erreur est due au fait qu'il y à plusieurs enregistrement avec Paris dans la table pourcentage.

    ----

    Pouvez vous SVP me montrer une solution pour effectuer cette requete?

    Merci d'avance

  2. #2
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Bonjour,

    Essaies-ça, ça doit le faire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT  ca_hono,
     scm_pourcentage 
    FROM scm
    INNER JOIN ca ON scm_agence_affect = ca_agence_ville
    WHERE ca_date_sign >= scm_date_effet
    AND ca_date_sign <= scm_date_fin;

  3. #3
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Si tu veux juste le total par agence, essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT ca_agence_ville, SUM(ca_hono * scm_pourcentage /100)
    FROM ca INNER JOIN SCM ON scm_agence_affect = ca_agence_ville 
                          AND ca_date_sign BETWEEN scm_date_effet AND scm_date_fin
    GROUP BY ca_agence_ville

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Jointure = JOIN
    Merci pour cette dernière requete elle fonctionne bien.

    Moralité: Il faut impérativement utiliser la fonction JOIN pour les jointure au lieu des SELECT * FROM A, B WHERE A.a = B.a;

  5. #5
    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 Re: Jointure = JOIN
    Citation Envoyé par rambou
    Moralité: Il faut impérativement utiliser la fonction JOIN pour les jointure au lieu des SELECT * FROM A, B WHERE A.a = B.a;
    c'est juste une histoire de syntaxe et de respect de la norme SQL, une jointure avec un WHERE donnerait le même résultat ?

Discussions similaires

  1. j'arrive pas à excuter une requete.
    Par abdelkaderg54 dans le forum Débuter
    Réponses: 3
    Dernier message: 04/07/2007, 16h24
  2. Une requete que je n'arrive pas a trouver
    Par patchouli dans le forum Langage SQL
    Réponses: 3
    Dernier message: 10/04/2007, 12h31
  3. J'arrive pas a faire les requete (minus et mysql)
    Par icicmoi dans le forum Requêtes
    Réponses: 1
    Dernier message: 12/01/2007, 10h26
  4. [C#] SQL - je n'arrives pas a faire ma requete
    Par Cazaux-Moutou-Philippe dans le forum Windows Forms
    Réponses: 5
    Dernier message: 06/07/2006, 14h43
  5. [C#] Je n'arrives pas a récuperer la valeur de retour de ma requete
    Par Cazaux-Moutou-Philippe dans le forum Windows Forms
    Réponses: 8
    Dernier message: 23/06/2006, 14h25

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