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

Requêtes MySQL Discussion :

Problème de SUM dans jointure BaseSQL


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club Avatar de morpheuss
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2013
    Messages : 61
    Points : 29
    Points
    29
    Par défaut Problème de SUM dans jointure BaseSQL
    Bonjour,

    J'ai un problème pour effectuer deux sommes des minutes de deux bases indépendantes en fonction du id_projet de ces deux bases.

    Voici ci-dessous la présentation de mes bases de données SQL

    Base1: "pointage_projet"

    +----+------------+---------------+----------------+------------------+
    | id | initiale | date | id_projet | minutes |
    +----+------------+---------------+----------------+------------------+
    | 1 | MC | 2016-12-01 | 2 | 12 |
    | 2 | STS | 2016-11-30 | 1 | 50 |
    | 3 | MC | 2016-11-30 | 1 | 20 |
    | 4 | DC | 2016-11-29 | 3 | 30 |


    Base2: "pointage_projet_2"

    +----+------------+---------------+----------------+------------------+
    | id | id_ouv | date | id_projet | minutes |
    +----+------------+---------------+----------------+------------------+
    | 1 | 3 | 2016-12-02 | 1 | 10 |
    | 2 | 2 | 2016-12-01 | 1 | 5 |
    | 3 | 3 | 2016-11-29 | 2 | 25 |
    | 4 | 5 | 2016-11-29 | 3 | 50 |

    Base3: "projet"

    +----+----------------+-------------------------+----------------+
    | id | numprojet | description | id_client |
    +----+----------------+-------------------------+----------------+
    | 1 | AAA1 | Description projet 1 | 1 |
    | 2 | BBB2 | Description projet 2 | 1 |
    | 3 | CCC3 | Description projet 3 | 2 |

    Base4: "client"

    +----+-------------------+
    | id | nomclient |
    +----+-------------------+
    | 1 | Client 1 |
    | 2 | Client 2 |
    | 3 | Client 3 |


    Voici actuellement ma requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT p.id_projet, j.id_client, j.numprojet, j.description, c.nomclient,
    				SUM(p.minutes) AS SommeMinutesBE,
    				SUM(o.minutes) AS SommeMinutesAT
    				      FROM pointage_projet as p 
    				                 LEFT JOIN pointage_projet_2 as o ON o.id_projet = p.id_projet
    				                 LEFT JOIN projets as j ON j.id = p.id_projet
    				                 LEFT JOIN clients as c ON c.id = j.id_client
                    WHERE numprojet = 'AAA1'
                    GROUP BY j.numprojet

    Je souhaiterais avoir dans "SommeMinutesBE" la valeur 70 (minutes) et dans "SommeMinutesAT" la valeur 15 (minutes) mais ce n'est pas le cas.
    La valeur dans SommeMinutesBE est multipliée par le nombre de id_projet identique qu'il à trouver dans la 2e base. Donc cette requête n'est pas correcte, pouvez-vous m'aider ?

    Comment faire dans ce cas ?

    D'avance merci

    Steph

  2. #2
    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 778
    Points
    30 778
    Par défaut
    Il faut effectuer l'un des regroupements dans une table dérivée :
    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  p.id_projet
        ,   j.id_client
        ,   j.numprojet
        ,   j.description
        ,   c.nomclient
        ,   SUM(p.minutes) AS SommeMinutesBE
        ,   o.SommeMinutesAT
    FROM    projets             AS j
        LEFT JOIN
            pointage_projet     AS p
            ON  p.id_projet = j.id
    	LEFT JOIN
            (   SELECT  id_projet
                    ,   SUM(minutes) AS SommeMinutesAT
                FROM    pointage_projet_2   AS o
                GROUP BY id_projet
            )
            ON  o.id_projet = j.id
    	LEFT JOIN 
            clients             AS c 
            ON  c.id    = j.id_client
    WHERE   j.numprojet = 'AAA1'
    GROUP BY j.numprojet
    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.

  3. #3
    Nouveau membre du Club Avatar de morpheuss
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2013
    Messages : 61
    Points : 29
    Points
    29
    Par défaut
    Merci pour votre aide,

    J'ai l'erreur suivante et je ne m'en sort pas...
    Les alias sont tous différents, voyez-vous le problème ?

    #1248 - Every derived table must have its own alias

    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  p.id_projet
        ,   j.id_client
        ,   j.numprojet
        ,   j.description
        ,   c.nomclient
        ,   SUM(p.minutes) AS SommeMinutesBE
        ,   o.SommeMinutesAT
    FROM pointage_projet AS p
        LEFT JOIN projets AS j ON  j.id = p.id_projet
        LEFT JOIN clients AS c ON c.id = j.id_client
    	LEFT JOIN        ( SELECT  id_projet
                    ,   SUM(minutes) AS SommeMinutesAT
                FROM pointage_projet_ouvrier AS o
                GROUP BY j.numprojet
            ) ON o.id_projet = p.id_projet
     
     
    WHERE numprojet = 'SCY020'
    GROUP BY j.numprojet

  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 778
    Points
    30 778
    Par défaut
    En effet, il y avait une petite erreur dans ma requête
    La voici corrigée :
    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  p.id_projet
        ,   j.id_client
        ,   j.numprojet
        ,   j.description
        ,   c.nomclient
        ,   SUM(p.minutes) AS SommeMinutesBE
        ,   o.SommeMinutesAT
    FROM    projets             AS j
        LEFT JOIN
            pointage_projet     AS p
            ON  p.id_projet = j.id
    	LEFT JOIN
            (   SELECT  id_projet
                    ,   SUM(minutes) AS SommeMinutesAT
                FROM    pointage_projet_2
                GROUP BY id_projet
            )   AS o
            ON  o.id_projet = j.id
    	LEFT JOIN 
            clients             AS c 
            ON  c.id    = j.id_client
    WHERE   j.numprojet = 'AAA1'
    GROUP BY j.numprojet
    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
    Nouveau membre du Club Avatar de morpheuss
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2013
    Messages : 61
    Points : 29
    Points
    29
    Par défaut
    Merci beaucoup, ça fonctionne, super.

    Voici le code que j'ai utilisé:

    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
    SELECT  p.id
    	,	p.id_client
    	,	c.nomclient
    	,	p.numprojet
        ,	p.description
        ,   SUM(j.minutes) AS SommeMinutesBE
    	,	o.SommeMinutesAT
    FROM    projets AS p
     
    LEFT JOIN pointage_projet AS j ON j.id_projet = p.id
     
    LEFT JOIN
            (   SELECT  id_projet
                    ,   SUM(minutes) AS SommeMinutesAT
                FROM    pointage_projet_ouvrier
                GROUP BY id_projet
            )   AS o ON  o.id_projet = j.id_projet
    LEFT JOIN clients AS c ON c.id = p.id_client        
    WHERE p.numprojet = 'xxx'
    GROUP BY p.numprojet
    Merci et bonne journée

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

Discussions similaires

  1. [A-00] Problème de Sum dans un État
    Par samus535 dans le forum IHM
    Réponses: 4
    Dernier message: 19/03/2009, 14h00
  2. Problème de count dans jointure
    Par metfan dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/08/2007, 10h58
  3. sum() dans une jointure interne
    Par xenos dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/07/2007, 18h42
  4. Réponses: 12
    Dernier message: 23/05/2007, 11h37
  5. [SQL] problème de SUM dans un update
    Par _Jérôme_ dans le forum Langage SQL
    Réponses: 5
    Dernier message: 12/03/2007, 19h22

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