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 :

comment rechercher les derniers enregistrement d'une table ?


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut comment rechercher les derniers enregistrement d'une table ?
    un petit exemple sera plus parlant :
    je recois les enregistrement suivant deja classé de ma requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     [b]select resourcename as R, machine as M, starttime as ST, endtime as ET
       from machine
       order by starttime desc[/b]

    voici le resulat de la requete:

    R M ST ET
    3 Machine3 2005-09-27 14:32:24.000 NULL
    1 Machine1 2005-09-27 14:26:09.000 NULL
    2 Machine2 2005-09-27 13:46:45.000 2005-09-27 14:12:42.000
    1 Machine1 2005-09-27 12:28:02.000 NULL
    1 Machine1 2005-09-27 12:26:14.000 NULL


    Le problème est que je ne veux obtenir que les machine avec la derniere date correspondant, cad les trois premieres lignes avec Machine 3, 1 et 2
    sans les deux dernieres lignes de machine1

    HELP !!!!

  2. #2
    Membre habitué Avatar de souellet
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2003
    Messages : 155
    Points : 171
    Points
    171
    Par défaut
    Ne connaissant pas ton SGBD, essai;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT resourcename as R, machine as M, starttime as ST, endtime as ET 
    FROM machine 
    ORDER BY starttime desc
    FETCH FIRST ROW ONLY

  3. #3
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Bonjour,

    Pour info :
    FETCH FIRST 3 ROWS ONLY est spécifique DB2

    Il existe divers equivalents selon les différents moteurs
    MS : TOP 3
    Oracle : ROWNUM < 3
    MySQL : limit n,m
    InterBase : ROWS


    Sinon il existe la solution qui consiste à faire 1 auto-jointure de ta table, en comptant ts les 'starttime' <= à 'starttime' pour nr garder que ceux qui ont 1 count <= 3.

    C'est 1 demande récurrente sur le forum, si tu fais 1 recherche tu devrais trouver ton bonheur.


    A +

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    oups j'ai oublié de vous mentionné que c'est du SQL serveur .... en parallele je regarde les sujets equivalents ....

  5. #5
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Bonjour,

    Citation Envoyé par hornetboy
    oups j'ai oublié de vous mentionné que c'est du SQL serveur
    Alors avec TOP 3 ça devrait le faire...

    sinon essaies-ça

    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
    select 	resourcename as R, 
    	machine as M, 
    	starttime as ST, 
    	endtime as ET 
    from 	machine
    where starttime in 
    (
    select m1.starttime 
    from 	machine m1
    inner join machine m2
    on	 m1.starttime <= m2.starttime
    group by m1.starttime
    having count(m1.starttime) < 4
    )
    order by starttime DESC;
    A +

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

Discussions similaires

  1. Comment connaître le dernier enregistrement d'une table?
    Par THOMAS Patrice dans le forum SQL
    Réponses: 6
    Dernier message: 11/05/2010, 12h53
  2. Réponses: 2
    Dernier message: 06/05/2010, 15h55
  3. Réponses: 5
    Dernier message: 22/03/2010, 01h19
  4. Comment récupérer les 2 derniers enregistrements d'une table?
    Par js8bleu dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 07/11/2009, 19h21
  5. [C#/Oracle] Comment obtenir le dernier enregistrement d'une table ?
    Par heavydrinker dans le forum Accès aux données
    Réponses: 1
    Dernier message: 10/08/2006, 17h03

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