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

Contribuez Discussion :

[FAQ] : retrouver les enregistrements les plus récents par catégorie


Sujet :

Contribuez

  1. #1
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 612
    Points : 56 717
    Points
    56 717
    Billets dans le blog
    40
    Par défaut [FAQ] : retrouver les enregistrements les plus récents par catégorie
    Bonjour à tous,

    rien d’extraordinaire ici mais voilà quand même le genre de requêtes qui revient souvent sur le forum :

    Requête complexe : statut le plus récent de plusieurs dossiers
    suppression de données en fonction de la date
    la date la plus recente
    Afficher la date la plus recente

    et la dernière à ce jour:
    Date la plus récente dans requête

    et j’en passe encore…

    Comme je n’ai pas trouvé d’entrée dans la FAQ sur le sujet, j’en propose une nouvelle, du style :

    Citation Envoyé par FAQ: retrouver les enregistrements les plus récents par catégorie

    Exemple avec une table TblCommande :
    TblCommande(idCommande, DateCommande, idClient, SatutCommande)

    idClient étant une clé étrangère reliée à la clé primaire d'une table TblClient.

    Comment retrouver la commande la plus récente passée par chacun des clients ?

    On peut passer par une sous-requête :
    R1 :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT idClient, Max(DateCommande) as DateDerniereCommande
    FROM TblCommande
    GROUP By idClient ;

    Puis la requête principale:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT TblCommande.* 
    FROM TblCommande INNER JOIN R1
    ON TblCommande.idClient=R1.idClient
    	AND TblCommande.DateCommande=R1.DateDerniereCommande;

    Si à la date la plus récente, un client a passé plusieurs commandes, toutes ces commandes sont bien entendu retournées.

    On peut imbriquer la sous-requête dans la requête principale si on le souhaite :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT TblCommande.* 
    FROM TblCommande INNER JOIN 
    (
      SELECT T.idClient, Max(T.DateCommande) as DateDerniereCommande
      FROM TblCommande T
      GROUP By idClient
    ) as R1
    ON TblCommande.idClient=R1.idClient
    	AND TblCommande.DateCommande=R1.DateDerniereCommande;

    Elle peut également être adaptée à d’autres situations analogues : commande la plus ancienne par client (avec MIN cette fois), score le plus élevé par équipe, etc.
    voilà voilà

  2. #2
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Octobre 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Remerciement
    Encore une fois de plus, ça vaut la peine d'effectuer des recherches sur ce FAQ. Merci mille fois

Discussions similaires

  1. Réponses: 5
    Dernier message: 18/08/2009, 17h32
  2. Réponses: 3
    Dernier message: 18/02/2009, 10h00
  3. Réponses: 5
    Dernier message: 02/05/2008, 15h28
  4. Réponses: 2
    Dernier message: 12/12/2006, 00h22
  5. Recuperer les enregistrements present plus de x fois
    Par rikewir dans le forum Requêtes
    Réponses: 5
    Dernier message: 05/04/2006, 16h05

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