Selection des 5 dernieres lignes d'une table.

princejude Messages postés 25 Statut Membre -  
princejude Messages postés 25 Statut Membre -
Bonjour,
qu'elqu1 pourra t'il m'aider.
requete en oracle permettant de renvoyer les 5 dernieres lignes d'une table.
A voir également:

5 réponses

chuka Messages postés 980 Statut Membre 378
 
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
princejude Messages postés 25 Statut Membre
 
merci pour ton aide CHUKA.
je vais le tester.
0
princejude Messages postés 25 Statut Membre > princejude Messages postés 25 Statut Membre
 
ca marche à merveil!!!
merci encore pour ton aide:
c'etait yapo judicael de ITA
0
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
princejude Messages postés 25 Statut Membre
 
je dirai plutot les 5 derniers enregistrements dans une table.
En fait je cherche à ecrire une procedure stockée.
0
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
princejude Messages postés 25 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
macgawel Messages postés 676 Statut Membre 89 > princejude Messages postés 25 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
princejude Messages postés 25 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
princejude Messages postés 25 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
Stef60 Messages postés 257 Statut Membre 41
 
Bonsoir,
tu as un champs auto-incrementé ou un champs date dans ta table ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
chuka Messages postés 980 Statut Membre 378
 
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
princejude Messages postés 25 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