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 :

Logique de requête SQL


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 82
    Points : 55
    Points
    55
    Par défaut Logique de requête SQL
    * Bonjour, *

    Je me résigne à poster, mais je crois que ma logique défaille...

    J'ai une table documents avec des champs id_client, id_doc, type_doc (dont 'facture'), date_doc.

    Je souhaite en extraire la liste des id_clients qui ont eu au mins 3 factres depuis 1 an. Cela paraît simple et pourtant...

    Quelque chose comme cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT id_client, COUNT(id_doc) AS nb_factures
    FROM documents
    WHERE type_doc LIKE ('facturation%') 
    GROUP BY id_client
    HAVING (nb_factures>=3 AND date_doc >= '2013-11-30')
    Il va me donner des clients qui certes ont plus de 3 factures, mais elles ne seront pas forcément datées de moins d'un an.
    J'ai essayé plein de trucs et je ne voit pas comment structurer ma requête.

    Un tuyau ?

    * Merci *

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

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    AND date_doc >= '2013-11-30' est un filtre, placez le dans la clause WHERE.

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 82
    Points : 55
    Points
    55
    Par défaut
    Je m'auto réponds avec un truc qui semble bon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT id_client, COUNT(id_doc) AS nb_factures
    FROM documents
    WHERE date_doc>'2012-11-30'
    GROUP BY id_client
    HAVING nb_factures >= 3
    Cela me semble bon. C'est tout simple.
    Mon souci c'était que parfois j'avais ceux qui vaient déjà eu 3 factures, mais pas forcément depuis un an, ou ceux qui avaient 3 factures depuis un an mais alors il manquait ceux qui avait aussi eu des factures avant.

    bref: résolu.

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

Discussions similaires

  1. [ DB2 ] [ AS400] requête sql
    Par zinaif dans le forum DB2
    Réponses: 6
    Dernier message: 23/08/2008, 19h42
  2. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  3. A propos d'une requête SQL sur plusieurs tables...
    Par ylebihan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/09/2003, 16h26
  4. PB requète SQL avec Interbase
    Par missllyss dans le forum InterBase
    Réponses: 2
    Dernier message: 15/07/2003, 11h37
  5. Requête SQL
    Par Leludo dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/02/2003, 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