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

Développement SQL Server Discussion :

Recuperer l'enregistrement le plus recent


Sujet :

Développement SQL Server

  1. #1
    Membre habitué Avatar de jubourbon
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 540
    Points : 189
    Points
    189
    Par défaut Recuperer l'enregistrement le plus recent
    Bonjour à tous,

    Je me casse la tête sur un problème depuis quelques heures. Je souhaite récupérer l'enregistrement le plus récent de chaque éléments de ma table.
    Un dessin vaut mieux qu'un long discours, voici un exemple de ma table:

    Nom Score Date
    Joueur1 2 10/11/2009
    Joueur1 1 09/11/2009
    Joueur2 4 08/11/2009
    Joueur2 1 09/11/2009

    Et j'aimerais obtenir après ma requette:
    Nom Score Date
    Joueur1 2 10/11/2009
    Joueur2 1 09/11/2009

    En gros l'enregistrement le plus récent de chaque joueur.

    J'ai essayé le max, le last... mais je ne parviens pas à obtenir ce résultat.

    Merci d'avance pour votre aide.

  2. #2
    Membre régulier Avatar de Chacha35
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 264
    Points : 114
    Points
    114
    Par défaut
    Salut,

    Moi je ferais un truc du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT Nom, Score, max(Date)
    FROM TaTABLE
    GROUP BY Nom

  3. #3
    Membre habitué Avatar de jubourbon
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 540
    Points : 189
    Points
    189
    Par défaut
    Si je fait ca, il me dit "Score n'est pas valide dans la liste de sélection parce qu'elle n'est pas contenue dans une fonction d'agrégation ou dans la clause GROUP BY."
    et si je met score ca revient à ne pas mettre de Group by

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Essayez ceci :

    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
    ;WITH
    	CTE AS
    	(
    		SELECT Nom,
    				MAX(dateScore) AS dateDernierScore
    		FROM dbo.maTableDeScores
    		GROUP BY Nom
    	)
    SELECT T.Nom,
    		T.Score,
    		T.dateScore
    FROM dbo.maTableDeScores AS T
    JOIN CTE
    	ON T.Nom = CTE.Nom
    	AND T.dateScore = CTE.dateDernierScore
    C'est valable sous SQL Server 2005 et 2008.

    Vous pouvez aussi écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT T.Nom,
    		T.Score,
    		T.dateScore
    FROM dbo.maTableDeScores AS T
    JOIN (
    		SELECT Nom,
    				MAX(dateScore) AS dateDernierScore
    		FROM dbo.maTableDeScores
    		GROUP BY Nom
    	) AS DRV
    	ON T.Nom = DRV.Nom
    	AND T.dateScore = DRV.dateDernierScore
    Qui est valable dès SQL Server 2000

    @++

  5. #5
    Membre régulier Avatar de Chacha35
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 264
    Points : 114
    Points
    114
    Par défaut
    Je propose ça, j'ai testé ça doit le faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT Nom, Score, Date
    FROM   Table_1 Tab1
     
    WHERE  Date = (SELECT MAX(Date)
                            FROM   Table_1 Tab2
                            WHERE   Tab1.Nom =  Tab2.Nom)
    ORDER BY Nom

  6. #6
    Membre habitué Avatar de jubourbon
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 540
    Points : 189
    Points
    189
    Par défaut
    Merci pour vos réponses, les 2 dernières fonctionne parfaitement.

    Question par rapport au WITH que je ne connaissait pas, puis je faire plusieurs with avant ma requette?

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

Discussions similaires

  1. Recuperer le fichier le plus recent
    Par dngaya dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 17/02/2009, 07h22
  2. Réponses: 2
    Dernier message: 09/10/2007, 02h08
  3. [MySQL] l'enregistrement le plus récent
    Par unmulot dans le forum Langage SQL
    Réponses: 4
    Dernier message: 07/07/2006, 11h06
  4. Recuperer les enregistrements present plus de x fois
    Par rikewir dans le forum Requêtes
    Réponses: 5
    Dernier message: 05/04/2006, 16h05
  5. [requete] recupérer enregistrement plus recent
    Par michaelbob dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 06/02/2006, 17h45

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