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 :

Requete sql en utlisant count et sum?


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Requete sql en utlisant count et sum?
    Bonjour
    J'ai trois tables, et je veux récupérer un count et sum de deux champs qui se trouvent dans deux tables différentes, je pense que ma requête est fausse, car elle renvoie un faux résultat.
    Voici ma requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select v.Cod, b.typ_bon,
      count(b.num_bon) as nb_remis_gpl,
      sum(i.nb_bon) as nb_cons_gpl
    from vehicule v, bon b, index_kilom i
    group by v.Cod, b.typ_bon
    SOS SVP

  2. #2
    Modérateur

    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
    Tu as fait un produit cartésien entre les trois tables au lieu de faire des jointures !

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 262
    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 262
    Points : 12 936
    Points
    12 936
    Par défaut
    Bonjour,
    Je pense qu'il manque la condition de jointure entre les trois tables:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT v.Cod, b.typ_bon,
      count(b.num_bon) AS nb_remis_gpl,
      sum(i.nb_bon) AS nb_cons_gpl
    FROM vehicule v
    INNER JOIN bon b Une condition ici
    INNER JOIN index_kilom i et une autre condition là
    GROUP BY v.Cod, b.typ_bon

    Tatayo.

  4. #4
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    bonjour
    Au début j'ai fais la jointure et ça n'a pas marché !!! faux résultat renvoyé.
    je suis vraiment bloquée!!!

  5. #5
    Modérateur

    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
    Plutôt que de répéter que le résultat est faux, donne un exemple de données et le résultat attendu, ainsi que la structure des tables impliquées, comme le demande les règles d'utilisation de ce forum.

  6. #6
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Je vais citer les champs les plus utilisés
    Table Vehicule(Cod,Mat,Marq,cond)
    Table Bon(Cod,Num_bon,Dat,typ_bon)
    Table index_kilom(Cod,typ_car,Nb_bon)

    Moi je veux calculer l'écart
    écart= Nombre de bons remis-Nombre de bon consommé

    Nombre de bons remis sera calculé à partir la table bon avec cette requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select v.Cod, b.typ_bon,
      count(b.num_bon) as nb_remis_gpl
    from vehicule v, bon b
    where b.cod=v.cod
    group by v.Cod,b.typ_bon
    elle affiche comme résultat (qui est bon):

    Cod typ_bon nb_remis_gpl
    G001 GPL 25
    G002 GPL 15
    G003 Gasoil 9


    Nombre de bons consommés sera calculé à partir la table index_kilom avec cette requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select v.Cod, i.typ_car,
      sum(i.nb_bon) as nb_cons_gpl
    from vehicule v, index_kilom i
    where i.cod=v.cod
    group by v.Cod,i.typ_car
    elle affiche comme résultat (qui est bon):

    Cod nb_remis_gpl nb_cons_gpl
    G001 275 525
    G002 150 350
    G003 36 45


    j'attends votre aide, je suis vraiment coincée

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 262
    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 262
    Points : 12 936
    Points
    12 936
    Par défaut
    Bonjour,
    Il y a certainement une autre méthode, mais j'utilise celle-ci:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    select code,sum(REMIS) - sum(CONSO) from
    (
    select v.Cod as CODE,count(b.num_bon) as REMIS,0 as CONSO as nb_remis_gpl
    from vehicule v,bon b
    where b.cod=v.cod
    group by v.Cod
    union all
    select v.Cod,0,sum(i.nb_bon) as nb_cons_gpl
    from vehicule v,index_kilom i
    where i.cod=v.cod
    group by v.Cod
    )
    group by CODE

    TATAYO.

  8. #8
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    merci
    ça n'a pas marché, moi j'utilise le module database desktop de delphi7 (tables paradox), et toute requête imbriquée il ne l'exécute pas !!!

  9. #9
    Modérateur

    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
    Et avec des jointures externes ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT v.Cod, b.typ_bon, 
        COUNT(b.num_bon) AS nb_remis,
        SUM(i.nb_bon) AS nb_cons
    FROM vehicule v
    LEFT OUTER JOIN bon b ON b.cod = v.cod
    LEFT OUTER JOIN index_kilom i ON i.cod = v.cod
    GROUP BY v.Cod, b.typ_bon
    Peut-être même que les jointures internes (INNER JOIN) fonctionneraient.
    Au passage, tu utilises encore en 2010 la syntaxe des jointures périmée depuis 1999 !

  10. #10
    Membre actif Avatar de sofiane_bfm007
    Profil pro
    Consultant Décisionnel
    Inscrit en
    Mai 2008
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Consultant Décisionnel

    Informations forums :
    Inscription : Mai 2008
    Messages : 261
    Points : 242
    Points
    242
    Par défaut
    Bonjour,
    Tu peux nous montrer les cardinalités entre tes tables !!! c'est important afin de savoir si on devra utiliser les jointures externe ou pas. Fais nous un schéma de ta base
    Bon courage

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

Discussions similaires

  1. Requete SQL : 2 tables + count
    Par vichenze dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/08/2007, 10h28
  2. [SQL] Erreur repetitive sur requete SQL (Count et Sum)
    Par hools dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/06/2007, 11h57
  3. [Access] Probleme de count dans une requete sql
    Par castelligreg dans le forum Langage SQL
    Réponses: 6
    Dernier message: 14/04/2006, 16h20
  4. [sql]Probleme de count dans une requete sql (sous access)
    Par castelligreg dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 14/04/2006, 16h06
  5. problème requete sql fusion de deux count
    Par TuxP dans le forum Langage SQL
    Réponses: 6
    Dernier message: 14/12/2005, 15h15

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