Selection des 5 dernieres lignes d'une table.

princejude Messages postés 18 Date d'inscription   Statut Membre -  
princejude Messages postés 18 Date d'inscription   Statut Membre -
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. chuka Messages postés 980 Statut Membre 379
     
    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. princejude Messages postés 18 Date d'inscription   Statut Membre
       
      merci pour ton aide CHUKA.
      je vais le tester.
      0
      1. princejude Messages postés 18 Date d'inscription   Statut Membre > princejude Messages postés 18 Date d'inscription   Statut Membre
         
        ca marche à merveil!!!
        merci encore pour ton aide:
        c'etait yapo judicael de ITA
        0
  2. macgawel Messages postés 676 Statut Membre 89
     
    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
  3. princejude Messages postés 18 Date d'inscription   Statut Membre
     
    je dirai plutot les 5 derniers enregistrements dans une table.
    En fait je cherche à ecrire une procedure stockée.
    0
    1. macgawel Messages postés 676 Statut Membre 89
       
      Oui, mais les 5 derniers par rapport à quoi ?

      Parce que la notion de '5 derniers enregistrements' n'existe pas vraiment dans Oracle...
      0
      1. princejude Messages postés 18 Date d'inscription   Statut Membre > macgawel Messages postés 676 Statut Membre
         
        je 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
      2. macgawel Messages postés 676 Statut Membre 89 > princejude Messages postés 18 Date d'inscription   Statut Membre
         
        Si 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
      3. princejude Messages postés 18 Date d'inscription   Statut Membre > macgawel Messages postés 676 Statut Membre
         
        voici 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
      4. princejude Messages postés 18 Date d'inscription   Statut Membre > macgawel Messages postés 676 Statut Membre
         
        je 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. Stef60 Messages postés 257 Statut Membre 41
     
    Bonsoir,
    tu as un champs auto-incrementé ou un champs date dans ta table ?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. chuka Messages postés 980 Statut Membre 379
     
    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. princejude Messages postés 18 Date d'inscription   Statut Membre
       
      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