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 :

Problème requête SQL / Client par datefacture


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Août 2008
    Messages : 2
    Par défaut Problème requête SQL / Client par datefacture
    Bonjour tout le monde. C'est mon premier message sur votre forum. Je suis un technicien en informatique de l'est du Québec et offrir du support pour une BD SQL Server fait partie de mes tâches.

    Ma requête : trier les clients de la compagnie par date de facture pour déterminer quels sont les clients à éliminer du système.

    À date, j'ai la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT DISTINCT F.CfDateFacture AS 'Derniere Facture', DbVendeur AS 'Vendeur', 
       DbClient AS 'Client', DbNom AS 'Nom', DbAdresse1 AS 'Adresse', 
       DbVille AS 'Ville', DbProvince AS 'Province', DbCodePostal AS 'Code Postal', 
       DbTelephone AS 'Téléphone', DbStatut AS 'Statut', DbEntrepot AS 'Entrepot' 
    FROM tDbClient C
      JOIN tCfFacture F ON F.CfClientLivre = C.DbClient
    ORDER BY F.CfDateFacture DESC, DbClient ASC
    Elle m'envoie toutes les factures triées par date avec les informations du client à coté. Je voudrais plutôt qu'elle me sorte qu'un enregistrement par client en les triant par date.

    PS: Il n'y a pas de numéro auto dans les deux tables (Ce n'est pas mon système )

    Merci de votre support,

    Jean-Philippe Paradis, technicien en informatique

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 291
    Par défaut
    Citation Envoyé par paradis.jp Voir le message

    Elle m'envoie toutes les factures triées par date avec les informations du client à coté. Je voudrais plutôt qu'elle me sorte qu'un enregistrement par client en les triant par date.
    Si je comprends bien, tu veux une liste de tes clients, triés par date de facture la plus récente ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT MAX(F.CfDateFacture) AS 'Derniere Facture', DbVendeur AS 'Vendeur', 
       DbClient AS 'Client', DbNom AS 'Nom', DbAdresse1 AS 'Adresse', 
       DbVille AS 'Ville', DbProvince AS 'Province', DbCodePostal AS 'Code Postal', 
       DbTelephone AS 'Téléphone', DbStatut AS 'Statut', DbEntrepot AS 'Entrepot' 
    FROM tDbClient C
      JOIN tCfFacture F ON F.CfClientLivre = C.DbClient
    GROUP BY DbVendeur, DbClient, DbNom, DbAdresse1, 
       DbVille, DbProvince, DbCodePostal, DbTelephone, DbStatut, DbEntrepot
    ORDER BY MAX(F.CfDateFacture) DESC, DbClient ASC

  3. #3
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Août 2008
    Messages : 2
    Par défaut
    Merci beaucoup, c'était si simple alors!

    Voici ma requete finale qui prend en compte que certains clients n'ont pas de factures:

    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
    SELECT DbChaine AS 'Ch.', DbClient AS 'Client', DbNom AS 'Nom', DbVille AS 'Ville', DbProvince AS 'Prov.',
    MAX(F.CfDateFacture) AS 'Dern. Facture', DbStatut AS 'St.', 
    DbEntrepot AS 'En.' 
    FROM tDbClient C
    JOIN tCfFacture F ON F.CfClientLivre = C.DbClient
    GROUP BY DbChaine, DbClient, DbNom, DbVille, DbProvince, DbStatut, DbEntrepot
    
    UNION
    
    SELECT DISTINCT DbChaine AS 'Ch.', DbClient AS 'Client',
    DbNom AS 'Nom', DbVille AS 'Ville', DbProvince AS 'Prov.',
    DbDateDerVte, DbStatut AS 'St.', DbEntrepot AS 'En.' 
    FROM tDbClient
    WHERE DbClient NOT IN (SELECT CfClientLivre FROM tCfFacture)
    
    ORDER BY DbChaine, DbClient
    DbDateDerVte est la date de derniere vente dans la table du client mais cette donnée n'est pas fiable, mais c'est mieux que rien.

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 291
    Par défaut
    Tu peux simplifier en remplaçant l'union par une jointure externe :
    (attention également à utiliser plutôt UNION ALL que UNION tout court).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT DbChaine AS 'Ch.', DbClient AS 'Client', DbNom AS 'Nom', 
    DbVille AS 'Ville', DbProvince AS 'Prov.', 
    COALESCE(MAX(F.CfDateFacture), MAX(C.DbDateDerVte)) AS 'Dern. Facture', 
    DbStatut AS 'St.', DbEntrepot AS 'En.' 
    FROM tDbClient C
      LEFT JOIN tCfFacture F ON F.CfClientLivre = C.DbClient
    GROUP BY DbChaine, DbClient, DbNom, DbVille, DbProvince, DbStatut, DbEntrepot

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

Discussions similaires

  1. Problème requête SQL
    Par mandaillou dans le forum Langage SQL
    Réponses: 15
    Dernier message: 03/10/2005, 11h37
  2. Problème requête SQL dans page ASP
    Par rocs dans le forum ASP
    Réponses: 14
    Dernier message: 26/07/2005, 15h38
  3. problème requête sql
    Par psychoBob dans le forum Langage SQL
    Réponses: 1
    Dernier message: 10/07/2005, 17h50
  4. problème requête sql
    Par perfectdams dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 21/06/2005, 18h09
  5. Réponses: 8
    Dernier message: 23/10/2003, 16h22

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