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 :

Count avec clause where multi table


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 46
    Points : 37
    Points
    37
    Par défaut Count avec clause where multi table
    Bonjour,

    Ayant été si bien aidé hier, je me permet de venir reposer une question qui je l'espere me permettra de clore mon projet.

    Je dois réussir à compter le nombre d'enregistrement correspondant a un titre,

    Ma requete actuelle :
    SELECT COUNT(Dvds.sTitre) AS nombre
    FROM Dvds, Facture_Dvds
    Where Dvds.sTitre = 'Underworld' AND Facture_Dvds.nidDvds=Dvds.nid;


    Elle devrait me retouner la valeur 3, mais elle me retourne 0.
    Je n'arrive pas a comprendre comment.

    Pourriez-vous m'aider a resoudre ce leger probleme ?

    Merci d'avance
    Lionel

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2006
    Messages : 400
    Points : 562
    Points
    562
    Par défaut
    Au lieu de lier les tables au niveau du WHERE, utilise plutôt une jointure.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT COUNT(Facture_Dvds.nidDvds) AS nombre
    FROM Dvds
       LEFT OUTER JOIN Facture_Dvds ON Facture_Dvds.nidDvds=Dvds.nid
    WHERE Dvds.sTitre = 'Underworld'
    GROUP BY Dvds.nid
    Pour nous aider à résoudre le problème, peux-tu nous donner un exemple de données, ainsi que le résultat attendu ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 46
    Points : 37
    Points
    37
    Par défaut
    Merci pour ta reponses,

    Comme exemple, j'ai dans ma table Dvds :
    nid sTitre nidEditeur
    1 Air Force One 1
    13 Underworld 4
    14 Underworld 4
    15 Underworld 4

    et dans ma table Facture_Dvds :
    nidFacture nidDvds nRendu
    9 1 1
    40 13 1
    45 1 0

    Le champ nRendu à 1 specifiant que le Dvds à été rendu.

    Le resultat requis serait que lorsque je j'envoie Underworld,
    la requete me retourne 3 comme il n'est pas à 0 dans nRendu.
    et si j'envoie air Force One, elle me renvoie 0 comme le dvd n'est qu'une fois dans la table Dvds est dans Facture_Dvds avec 0 pour nRendu.

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2006
    Messages : 400
    Points : 562
    Points
    562
    Par défaut
    Il faut donc compter le nombre d'exemplaires disponibles pour un Titre de DVD.
    Ce nombre est égal au nombre d'exemplaires présents dans la table Dvds moins le nombre d'exemplaires non rendus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT COUNT(Dvds.sTitre) - COUNT(Facture_Dvds.nidFacture) AS nombre
    FROM Dvds
       LEFT OUTER JOIN Facture_Dvds ON Facture_Dvds.nidDvds=Dvds.nid
          AND Facture_Dvds.nRendu=0
    WHERE Dvds.sTitre = 'Underworld'
    GROUP BY Dvds.sTitre

  5. #5
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 46
    Points : 37
    Points
    37
    Par défaut
    merci cela fonctionne a la perfection.


    je n'aurai pas trouver tout seul, je n'ai jamais vus les requetes SQL aussi loin.

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

Discussions similaires

  1. COUNT et GROUP BY avec clause WHERE
    Par mickey45 dans le forum Requêtes
    Réponses: 8
    Dernier message: 13/09/2011, 14h31
  2. Count avec clause Where
    Par bletz dans le forum Designer
    Réponses: 1
    Dernier message: 26/08/2008, 10h44
  3. probleme avec LEFT JOIN multi tables
    Par hinsano dans le forum Langage SQL
    Réponses: 5
    Dernier message: 08/07/2006, 06h36
  4. [DTS] Problème avec clause WHERE sur Date
    Par bibou dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 28/06/2006, 12h18
  5. Petit souci avec clause where
    Par ybruant dans le forum SQL
    Réponses: 1
    Dernier message: 21/07/2005, 22h10

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