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 :

select clients avec toutes les factures payées


Sujet :

Langage SQL

  1. #1
    Membre du Club Avatar de bylka
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 184
    Points : 60
    Points
    60
    Par défaut select clients avec toutes les factures payées
    Bonjour

    Voila je veux réaliser une requête SQL qui me permet de sélectionner les clients qui ont toutes les factures payées, C.A.D: si un client à 10 facture et il a payé 8 (donc il reste 2 non payées) ==> le client n'est pas sélectionné

    maintenant, si un client à 10 facture et il a payé les 10 factures ==> le client sera sélectionné

    Est ce que quelqu'un aurai une idée ??

    Merci d'avance pour l'aide

    ++

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    salut,

    peux tu nous donner un petit exemple du contenu de tes tables?
    comment sait-on qu'il a payé une facture?

  3. #3
    Membre du Club Avatar de bylka
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 184
    Points : 60
    Points
    60
    Par défaut
    en faite ,j'ai le champ is_paid dans la table facture

    la requête ci-dessous me donne les clients qui ont au moins une facuture payée, mais moi je veux les clients avec toutes les factures payées

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT distinct client.id_client
    FROM facture,client
    WHERE facture.id_client = client.id_client AND facture.is_paid = 'YES'
    Merci

  4. #4
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 788
    Points : 3 054
    Points
    3 054
    Par défaut
    Bonjour

    Une piste.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id_client, Count(id_client) FROM Facture
    Cette requête va retourner 10 si le client a eu 10 factures; indépendamment si elle est payée ou non.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id_client, Count(id_client) FROM Facture WHERE is_paid='YES'
    Et cette requête retournerait chaque client avec le nombre de factures payées.

    On pourrait p.e. créer une stored proc avec une table temporaire (en mémoire). Cette table reprendrait trois champs : client_id, nbr_fac, nbr_fac_paid. La table qui serait initialisée avec la première requête (un INSERT INTO). La seconde requête permettrait de faire un update du troisième champs.

    Ensuite un SELECT sur cette table avec une condition d'égalité sur les deux derniers champs te permettra de trouver tes meilleurs clients.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 135
    Points : 164
    Points
    164
    Par défaut
    Pour avoir client avec dix factures payés tu ajoutes à la requête précédente
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT id_client, Count(id_client) 
              FROM Facture 
              WHERE is_paid='YES'
              having Count(id_client)=10
    A+

  6. #6
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849
    Par défaut
    Salut,
    Pour un cas plus général que 10 factures, moi je ferais comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    select f.id_client,
           count(*) as nb_total,
           sum(case when f.is_paid='YES' then 1 else 0 end) as nb_paye
    from facture f
    group by f.id_client
    having sum(case when f.is_paid='YES' then 1 else 0 end) = count(*)
    PS : faut mettre un GROUP BY quand on fait des aggrégations

  7. #7
    Membre du Club Avatar de bylka
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 184
    Points : 60
    Points
    60
    Par défaut
    Yes

    Merci skuatamad c exactement la requête qu'il me fallait
    un grand merci aussi,pour toutes les autres réponses

    A+

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/07/2006, 19h59
  2. sortir un rapport avec toute les ligne interpreter
    Par grimsk dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 01/06/2006, 17h03
  3. [Base de registre] Dossier avec toutes les appli
    Par doudoustephane dans le forum Autres Logiciels
    Réponses: 22
    Dernier message: 29/05/2006, 21h20
  4. [EDI] ouverture projets avec toutes les unités
    Par OutOfRange dans le forum EDI
    Réponses: 3
    Dernier message: 14/02/2006, 20h37
  5. lenght marche avec tout les navigateurs?
    Par Death83 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 21/09/2005, 15h09

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