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 :

Sélection de la derniere commande


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2003
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 15
    Points : 11
    Points
    11
    Par défaut Sélection de la derniere commande
    Hello,

    Je dispose d'une table COMMANDE dans laquelle j'ai les champs suivants :

    • ID

    • CLIENT

    • DATE

    • MONTANT


    Cette table reprend toutes les commandes, càd l'historique compris.
    J'aimerais composer une requête SQL qui m'affiche un tableau ne reprenant que la dernière commande de chaque client.
    Exemple :

    1 --- ClientA --- 17/07/2003 --- 2250
    2 --- CLientB --- 15/06/2003 --- 3345
    3 --- ClientC --- 17/08/2003 --- 1245
    etc.

    J'essaye un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM COMMANDE WHERE (DATE = (SELECT MAX(DATE) FROM COMMANDE))
    Mais bien sûr...ça marche pas...il ne prend que les clients dont la date est correspond à la MAX date qu'il a trouvé dans la table.

    Thanks pour votre aide,
    Pizza

  2. #2
    Membre actif
    Avatar de MashiMaro
    Profil pro
    Inscrit en
    Février 2003
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 180
    Points : 213
    Points
    213
    Par défaut
    Essaie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select *
    from COMMANDE
    group by CLIENT
    having DATE=max(DATE)
    sinon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select *
    from COMMANDE A
    where DATE=(select max(DATE) from COMMANDE B where A.CLIENT=B.CLIENT)
    NB : crée un index sur CLIENT si tu veux que ce soit plus rapide et ce quelque soit la méthode

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2003
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Hello Ricou57,

    Thanks pour ta réponse.

    La première requête ne marche pas car Access refuse que l'on fasse un SELECT * avec un GROUP BY apparement.

    La seconde par contre fonctionne nickel.

    Encore merci,
    Pizza

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup pour la réponse,
    la deuxième requête fonctionne a merveille pour un autre cas,

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

Discussions similaires

  1. Sélection des numéros de commandes
    Par tunis71187 dans le forum SQL
    Réponses: 7
    Dernier message: 12/02/2011, 14h04
  2. Sélection des 7 derniers jours sur une table de faits
    Par Fatah93 dans le forum SAS Base
    Réponses: 4
    Dernier message: 27/04/2009, 13h48
  3. Sélection des 5 derniers par catégorie
    Par Finality dans le forum Langage SQL
    Réponses: 8
    Dernier message: 24/04/2009, 21h06
  4. requête pour derniere commande
    Par Stéph utilisateur d'acces dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 14/12/2008, 15h49
  5. [SQL Server] Pb Date et Montant derniere commande
    Par marman dans le forum Langage SQL
    Réponses: 7
    Dernier message: 12/10/2006, 19h21

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