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 sous requete/jointure [MySQL-5.7]


Sujet :

Requêtes MySQL

  1. #1
    Membre expérimenté
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 076
    Points : 1 521
    Points
    1 521
    Billets dans le blog
    5
    Par défaut Problème de sous requete/jointure
    Bonjour à tous
    Dans le cadre de la gestion d'un club d'escrime j'ai une table (F) qui contient ce que le membre doit payer pour être inscrit et une autre table (V) qui contient les payements que chaque membre a effectué.
    Je voudrais faire des requêtes permettant de sélectionner:
    • Les membres qui ont tout payé
    • les membres qui ont partiellement payé



    la table F a cette structure

    Ref INT CLEF PREIMAIRE
    Lic INT
    Cot INT
    Loc INT

    Elle ressemble à ça

    Ref Lic Cot Loc
    1 100 50 20
    2 100 30 20
    3 100 50 0

    la table V qui a cette structure
    Ref INT CLEF PREIMAIRE
    Mbr INT CLEF ETRANGERE LIEE A F.Ref
    Ver INT
    La table V ressemble à ça

    Ref Mbr Ver
    1 1 50
    2 1 30
    3 2 50
    4 2 50
    5 2 30
    6 3 50

    Pour sélectionner les membres qui ont tout payé il faut que l'égalité suivante soit vraie: F.Lic+ F.Cot+F.Loc= SELECT SUM(V.Ver) WHERE Mbr= F.Ref
    Pour sélectionner les membres qui partiellement payé l'égalité précédente doit être fausse

    J'ai cherché à faire cela en une seule requête car je voulais éviter de faire une boucle pour chaque membre de la table mais le résultat n'est pas bon.

    Pour valider le concept j'ai déjà essayer cette requête qui permet d'afficher ce que chaque membre doit et ce qu'il a versé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT `F`.`Ref` AS Ref, `F`.`Lic`+`F`.`Cot`+`F`.`Location` AS Total, SUM(`V`.`Ver`) AS Paye
    FROM `F`
    JOIN `V` ON `F`.`Ref`=`V`.`Mbr`
    Au lieu d'avoir

    Ref Total Paye
    1 170 80
    2 150 130
    3 150 50

    J'ai

    Ref Total Paye
    3 150 260

    Il semble que la fonction SUM ait fait la somme de toutes les ligne sans tenir compte du champs Mbr

    J'ai aussi essayé avec une sous requête mais le résultat n'est pas mieux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT `F`.`Ref` AS Ref, `F`.`Lic`+`F`.`Cot`+`F`.`Location` AS Total,
    (SELECT SUM(`V`.`Ver`) FROM `V` WHERE Ref =`V`.`Mbr`) AS Paye
    FROM `F`
    JOIN `V` ON `F`.`
    J'ai le résultat suivant

    Ref Total Paye
    1 170 null
    2 150 null
    3 150 null
    Il y a des jours où j'éprouve une haine profonde envers microsoft et Apple c'est pas mieux
    Mon modeste site et mes modestes oeuvres sont
    Rémi

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Dans ta première requête il manque le GROUP BY, donc MySql fait un peu ce qu'il veut avec les autres colonnes.
    N'importe quel autre SGBD aurait rejeté cette requête.

    Tatayo.

  3. #3
    Membre expérimenté
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 076
    Points : 1 521
    Points
    1 521
    Billets dans le blog
    5
    Par défaut
    Effectivement en ajoutant le GROUP BY ça fonctionne nettement mieux. J'y avais bien pensé mais je ne l'avais pas essayé
    Il y a des jours où j'éprouve une haine profonde envers microsoft et Apple c'est pas mieux
    Mon modeste site et mes modestes oeuvres sont
    Rémi

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

Discussions similaires

  1. Sous-requete, jointure et utilisation du max
    Par dirty_harry dans le forum Langage SQL
    Réponses: 5
    Dernier message: 09/10/2009, 15h13
  2. problème avec sous requete
    Par Jérémy Lefevre dans le forum Requêtes
    Réponses: 15
    Dernier message: 06/09/2007, 16h03
  3. Problème de sous requete
    Par Celia1303 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 28/04/2006, 15h35
  4. Problème écriture sous-requete
    Par PoZZyX dans le forum Requêtes
    Réponses: 5
    Dernier message: 03/01/2006, 05h35
  5. Problème de sous-requete.
    Par Oberown dans le forum Access
    Réponses: 2
    Dernier message: 07/10/2004, 16h44

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