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 :

Faire une soustraction de résultats de requête


Sujet :

Langage SQL

  1. #1
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 153
    Points : 259
    Points
    259
    Par défaut Faire une soustraction de résultats de requête
    Bonjour à tous,

    J'aimerais savoir s'il est possible de faire des soustractions sur des resultats de requêtes, je vais essayer d'illustrer ce que je veux dire par un exemple simple:

    On veut connaitre la différence entre parties gagnées et parties perdues pour chaque joueur, en imaginant que l'on ai besoin de deux requêtes différentes pour connaitre le nombre de parties gagnées et le nombre de parties perdue:

    Pour les parties gagnées:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT joueur_id,count(*)
    FROM partie_gagne
    GROUP BY joueur_id
    Qui va nous retourner comme résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    joueur_id | count
    1         |     3
    __________|______
    2         |     0
    __________|______
    3         |     2
    __________|______
    Pour les parties perduees:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT joueur_id,count(*)
    FROM partie_perdue
    GROUP BY joueur_id
    Qui va nous retourner comme résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    joueur_id | count
    1         |     1
    __________|______
    2         |     3
    __________|______
    3         |     2
    __________|______
    Existe t'il une commande SQL qui en liant les deux requêtes nous retournerait comme résultats:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    joueur_id | count
    1         |     2
    __________|______
    2         |    -3
    __________|______
    3         |     0
    __________|______
    En vous remerciant de votre aide.

    -Neo-

  2. #2
    Expert éminent sénior
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    J'espère que ce n'est qu'un exemple fictif et que ce n'est pas le vrai modèle de ta base de données ?

    Tu nous donnes le cas réel ?

  3. #3
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 153
    Points : 259
    Points
    259
    Par défaut
    Je donne un exemple simple pour illustrer mon problème.
    Je n'ai pas mis mes requêtes car elles font chacune 30 ligne et qu'elle me retourne le bon résultat.


    Mon exemple est certes profondément débile d'un point de vue structurelle mais ce n'est pas le sujet du post

    EDIT:Ma base ne concerne pas des joueurs

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Bonjour,

    Faites une jointure entre vos deux requêtes, sur la colonne joueur_id. Il ne vous reste plus qu'à soustraire les deux count.
    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 
           g.joueur_id, 
           g.nb_gagnees, 
           p.nb_perdues, 
           g.nb_gagnees - p.nb_perdues AS score
    FROM 
          (
           SELECT joueur_id,count(*) AS nb_gagnees
           FROM partie_gagne
           GROUP BY joueur_id
          ) g
    LEFT JOIN
          (
           SELECT joueur_id,count(*) AS nb_perdues
           FROM partie_perdue
           GROUP BY joueur_id
          ) p
    ON g.joueur_id = p.joueur_id

  5. #5
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 153
    Points : 259
    Points
    259
    Par défaut
    Merci beaucoup pour cette petite astuce bien pratique

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

Discussions similaires

  1. [XL-2003] VBA : faire une soustraction rapide de deux colonnes
    Par yanou91 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 21/01/2013, 19h55
  2. faire une soustraction entre 2 enregistrements
    Par coyote06 dans le forum Access
    Réponses: 11
    Dernier message: 31/08/2008, 13h50
  3. [MySQL] Faire une soustraction/addition avec un minimum à respecter
    Par kevinf dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 05/07/2008, 11h14
  4. Faire une soustraction avec des heures
    Par patmar83 dans le forum VBA Access
    Réponses: 2
    Dernier message: 16/06/2008, 23h53
  5. Soustraction de résultats de requêtes
    Par Ithilien dans le forum Access
    Réponses: 5
    Dernier message: 21/12/2006, 11h58

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