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 :

Donnée la plus récente


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 32
    Points : 31
    Points
    31
    Par défaut Donnée la plus récente
    Bonjour, je bute sur une requete , voici mon problème
    je dispose d'une table "fiab" de 2 colonnes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     idi   date
    2    01/01/06
    2    01/02/06
    3    01/04/06
    3    01/03/06
    12  05/01/06
    12  01/01/06
    45  01/01/07
    56  01/01/06
    ...
    chaque idi est doublé dans cette table, je souhaite conserver, pour chaque idi l'idi qui possède la date la plus récente
    Merci de votre aide

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 802
    Points
    30 802
    Par défaut
    Cette question est régulièrement posée.

    Une réponse serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT  t1.*
    FROM    fiab AS t1
    WHERE   EXISTS
            (   SELECT  1
                FROM    fiab AS t2
                WHERE   t1.idi = t2.idi
                HAVING  t1.date = MAX(t2.date)  
            )
    ;
    Toutefois, cette requête n'est utile que si la table contient d'autres colonnes que l'identifiant et la date.

    Dans ton cas, cette requête est suffisante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT  t1.idi
        ,   MAX(t1.date)
    FROM    fiab AS t1
    GROUP BY t1.idi
    ;
    Attention à ne pas utiliser des mots clés du langage SQL comme identifiant d'objet (date dans ce cas précis)
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Si ce que tu veux, c'est, pour chaque idi, sa date la plus récente, je pense que min et group by suffisent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select idi, min(date)
    from fiab
    group by id
    A moins que je n'aie pas bien compris la demande...

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  4. #4
    Membre régulier Avatar de fabred
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2007
    Messages : 180
    Points : 119
    Points
    119
    Par défaut
    Je suis d'accord le MIN() doit suffier
    à resoudre ton prôblème !

    Bonne chance
    Merci de votre aide

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 802
    Points
    30 802
    Par défaut
    Citation Envoyé par fabred
    Je suis d'accord le MIN() doit suffier
    à resoudre ton prôblème !
    A ceci près que MIN retournera la date la plus ancienne et MAX la plus récente
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

Discussions similaires

  1. Extraire les données les plus récentes
    Par Europeans dans le forum Développement
    Réponses: 4
    Dernier message: 13/03/2012, 12h03
  2. retrouver la donnée la plus récente
    Par sam01 dans le forum Requêtes
    Réponses: 3
    Dernier message: 12/10/2009, 16h55
  3. [MySQL] afficher une donnée la plus récente
    Par topino dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 01/08/2008, 17h26
  4. Donnée date plus récente
    Par Djludo dans le forum Langage SQL
    Réponses: 4
    Dernier message: 17/03/2008, 09h40
  5. récupération d'une donnée la plus récente
    Par liloo974 dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 03/08/2007, 12h47

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