Selection des 5 dernieres lignes d'une table.

Bonjour,
qu'elqu1 pourra t'il m'aider.
requete en oracle permettant de renvoyer les 5 dernieres lignes d'une table.
Configuration: Windows XP
Internet Explorer 6.0

5 réponses

  1. Salut,
    essaie cela:
    select * from (select id_compte,date_oper,libelle_oper,ROW_NUMBER() OVER (ORDER BY date_oper desc) num from mouvement
    where id_compte='co01') where num<5
    J'ai creer ce que tu as posté... et maintenant j'ai bien les 5 derniers mouvement...
    3
    1. merci pour ton aide CHUKA.
      je vais le tester.
      0
    2. @princejudeca marche à merveil!!!
      merci encore pour ton aide:
      c'etait yapo judicael de ITA
      0
  2. Bonjour.

    Oracle est un système de Bases de données relationnelles.
    Du coup, les 5 dernieres lignes d'une table, ça ne veut rien dire :
    Vu la façon dont Oracle stocke les données, l'endroit ou la ligne se trouve ne veut rien dire.

    Tu peux préciser ce que tu veux dire par "les 5 dernières lignes" ?
    0
    1. je dirai plutot les 5 derniers enregistrements dans une table.
      En fait je cherche à ecrire une procedure stockée.
      0
      1. Oui, mais les 5 derniers par rapport à quoi ?

        Parce que la notion de '5 derniers enregistrements' n'existe pas vraiment dans Oracle...
        0
      2. @macgawelje ne suis pas aussi avancé dans le domaine mais je veux illustrer la chose :
        j'ai uue table MOUVEMENT sur un compce bancaire.
        et je vroudrais renvoyer lles 5 derniers mouvements sur le compte.
        0
      3. @macgawelje ne suis pas aussi avancé dans le domaine mais je veux illustrer la chose :
        j'ai uue table MOUVEMENT sur un compce bancaire.
        et je vroudrais renvoyer lles 5 derniers mouvements sur le compte.
        0
      4. @princejudeSi tu as un champ "date", tu peux sortir ton select par ordre décroissant de la date de mouvement.
        Sinon, si l'identifiant est un champ auto-incrémenté, fais ton tri sur ce champ...
        0
      5. @macgawelvoici ce que j'ai pu faire

        creation des tables:*************************

        create table client
        (
        id_client varchar2(12) primary key,
        nom varchar2(25),
        prenom varchar2(35),
        e_mail varchar2(50),
        addresse varchar2(50),
        contact varchar2(15),
        mot_de_passe varchar2(12))
        tablespace e_banking_tab;

        create table compte
        (
        num_compte varchar2(12) primary key,
        solde number,
        debitmax number,
        type_compte number,
        date_creation date,
        num_client varchar2(12),
        constraint compte_client foreign key(num_client)
        references client(id_client)
        )
        tablespace e_banking_tab;

        create table mouvement
        (
        id_mouvement varchar2(12) primary key,
        libelle_oper varchar2(25),
        date_oper date,
        montant_oper number,
        solde_apres_oper number,
        id_compte varchar2(12),
        constraint compte_mouvement foreign key(id_compte)
        references compte(num_compte)
        )
        tablespace e_banking_tab;

        commit;

        insertion de champs:******************************
        insert into client values ('cli01','koné','françois','koné@yahoo.fr','02 bp 14 abidjan 02','01 26 45 12','clikofr@01');
        insert into client values ('cli02','konaté','loceni','konaté@yahoo.fr','12 bp 104 bingerville 12','05 12 78 12','clikolo@02');
        insert into client values ('cli03','yoboué','alfrède','yoboué@yahoo.fr','05 bp 845 abidjan 05','08 24 65 12','cliyoal@03');

        insert into compte values ('co01',450000,150000,2,'10-10-2005','cli01');
        insert into compte values ('co02',1250000,250000,1,'01-08-2006','cli01');
        insert into compte values ('co03',850000,150000,2,'03-05-1999','cli03');
        insert into compte values ('co04',0,150000,2,'10-10-2008','cli02');

        insert into mouvement values ('mouv01','creation','10-10-2005',0,0,'co01');
        insert into mouvement values ('mouv02','depot','11-10-2005',300000,300000,'co01');
        insert into mouvement values ('mouv03','virement','15-11-2005',50000,350000,'co01');
        insert into mouvement values ('mouv04','retrait','10-12-2005',100000,350000,'co01');
        insert into mouvement values ('mouv05','retrait','19-12-2005',150000,200000,'co01');
        insert into mouvement values ('mouv06','depot','06-01-2006',250000,450000,'co01');
        insert into mouvement values ('mouv07','creation','01-08-2006',1000000,1000000,'co01');
        insert into mouvement values ('mouv08','depot','13-09-2006',250000,1250000,'co01');
        insert into mouvement values ('mouv09','creation','03-05-1999',100000,100000,'co03');
        insert into mouvement values ('mouv10','depot','05-06-1999',800000,900000,'co03');
        insert into mouvement values ('mouv11','virement','15-11-2005',50000,850000,'co03');
        insert into mouvement values ('mouv12','creation','10-10-2008',0,0,'co02');

        commit;

        Voici mes essais**********************

        SQL> select id_compte,date_oper,libelle_oper from mouvement where rownum<=5 and
        id_compte='co01' group by id_compte,date_oper,libelle_oper order by date_oper d
        esc;

        ID_COMPTE DATE_OPE LIBELLE_OPER
        ------------ -------- -------------------------
        co01 19/12/05 retrait
        co01 10/12/05 retrait
        co01 15/11/05 virement
        co01 11/10/05 depot
        co01 10/10/05 creation

        SQL> select id_compte,date_oper,libelle_oper from mouvement where rownum<=4 and
        id_compte='co01' group by id_compte,date_oper,libelle_oper order by date_oper d
        esc;

        ID_COMPTE DATE_OPE LIBELLE_OPER
        ------------ -------- -------------------------
        co01 10/12/05 retrait
        co01 15/11/05 virement
        co01 11/10/05 depot
        co01 10/10/05 creation

        SQL> select id_compte,date_oper from mouvement where rownum<=5 and id_compte='co
        02' group by id_compte,date_oper order by date_oper desc;

        ID_COMPTE DATE_OPE
        ------------ --------
        co02 10/10/08

        SQL> select id_compte,date_oper from mouvement where rownum<=4 and id_compte='co
        01' group by id_compte,date_oper order by date_oper desc;

        ID_COMPTE DATE_OPE
        ------------ --------
        co01 10/12/05
        co01 15/11/05
        co01 11/10/05
        co01 10/10/05

        et jusque là pas de resultats escomptés
        0
    2. Bonsoir,
      tu as un champs auto-incrementé ou un champs date dans ta table ?
      0
      1. Salut,
        si c'est sous oracle tu peux faire un truc du style:
        select nom_du_champ,rownum from ma_table where rownum<5
        order by id_table desc
        Pour MySQl tu as LIMIT que tu peux mettre comme condition...
        J'espere ca pourra t'aider!!
        @+
        0
        1. merci pour ton aide mais j'ai toujours pas de resultats satisfaisants.
          ce que j'ai essayé

          SQL> select id_compte,date_oper,libelle_oper from mouvement where rownum<=5 and
          id_compte='co01' group by id_compte,date_oper,libelle_oper order by date_oper d
          esc;

          ID_COMPTE DATE_OPE LIBELLE_OPER
          ------------ -------- -------------------------
          co01 19/12/05 retrait
          co01 10/12/05 retrait
          co01 15/11/05 virement
          co01 11/10/05 depot
          co01 10/10/05 creation

          alors qu'il ya des mouvements plus recents que ceux ci .

          En effet voici mes tables:

          create table client
          (
          id_client varchar2(12) primary key,
          nom varchar2(25),
          prenom varchar2(35),
          e_mail varchar2(50),
          addresse varchar2(50),
          contact varchar2(15),
          mot_de_passe varchar2(12))
          tablespace e_banking_tab;

          create table compte
          (
          num_compte varchar2(12) primary key,
          solde number,
          debitmax number,
          type_compte number,
          date_creation date,
          num_client varchar2(12),
          constraint compte_client foreign key(num_client)
          references client(id_client)
          )
          tablespace e_banking_tab;

          create table mouvement
          (
          id_mouvement varchar2(12) primary key,
          libelle_oper varchar2(25),
          date_oper date,
          montant_oper number,
          solde_apres_oper number,
          id_compte varchar2(12),
          constraint compte_mouvement foreign key(id_compte)
          references compte(num_compte)
          )
          tablespace e_banking_tab;

          commit;

          insertion *************

          insert into client values ('cli01','koné','françois','koné@yahoo.fr','02 bp 14 abidjan 02','01 26 45 12','clikofr@01');
          insert into client values ('cli02','konaté','loceni','konaté@yahoo.fr','12 bp 104 bingerville 12','05 12 78 12','clikolo@02');
          insert into client values ('cli03','yoboué','alfrède','yoboué@yahoo.fr','05 bp 845 abidjan 05','08 24 65 12','cliyoal@03');

          insert into compte values ('co01',450000,150000,2,'10-10-2005','cli01');
          insert into compte values ('co02',1250000,250000,1,'01-08-2006','cli01');
          insert into compte values ('co03',850000,150000,2,'03-05-1999','cli03');
          insert into compte values ('co04',0,150000,2,'10-10-2008','cli02');

          insert into mouvement values ('mouv01','creation','10-10-2005',0,0,'co01');
          insert into mouvement values ('mouv02','depot','11-10-2005',300000,300000,'co01');
          insert into mouvement values ('mouv03','virement','15-11-2005',50000,350000,'co01');
          insert into mouvement values ('mouv04','retrait','10-12-2005',100000,350000,'co01');
          insert into mouvement values ('mouv05','retrait','19-12-2005',150000,200000,'co01');
          insert into mouvement values ('mouv06','depot','06-01-2006',250000,450000,'co01');
          insert into mouvement values ('mouv07','creation','01-08-2006',1000000,1000000,'co01');
          insert into mouvement values ('mouv08','depot','13-09-2006',250000,1250000,'co01');
          insert into mouvement values ('mouv09','creation','03-05-1999',100000,100000,'co03');
          insert into mouvement values ('mouv10','depot','05-06-1999',800000,900000,'co03');
          insert into mouvement values ('mouv11','virement','15-11-2005',50000,850000,'co03');
          insert into mouvement values ('mouv12','creation','10-10-2008',0,0,'co02');

          commit;

          0