Selection des 5 dernieres lignes d'une table.

Fermé
princejude Messages postés 18 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 1 novembre 2009 - 23 oct. 2008 à 19:08
princejude Messages postés 18 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 1 novembre 2009 - 29 oct. 2008 à 20:34
Bonjour,
qu'elqu1 pourra t'il m'aider.
requete en oracle permettant de renvoyer les 5 dernieres lignes d'une table.

5 réponses

chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
28 oct. 2008 à 14:00
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 18 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 1 novembre 2009
28 oct. 2008 à 14:15
merci pour ton aide CHUKA.
je vais le tester.
0
princejude Messages postés 18 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 1 novembre 2009 > princejude Messages postés 18 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 1 novembre 2009
29 oct. 2008 à 20:34
ca marche à merveil!!!
merci encore pour ton aide:
c'etait yapo judicael de ITA
0
macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 89
23 oct. 2008 à 19:16
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 18 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 1 novembre 2009
23 oct. 2008 à 19:27
je dirai plutot les 5 derniers enregistrements dans une table.
En fait je cherche à ecrire une procedure stockée.
0
macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 89
23 oct. 2008 à 19:34
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 18 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 1 novembre 2009 > macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008
23 oct. 2008 à 19:59
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 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 89 > princejude Messages postés 18 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 1 novembre 2009
24 oct. 2008 à 14:11
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 18 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 1 novembre 2009 > macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008
28 oct. 2008 à 13:22
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 18 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 1 novembre 2009 > macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008
23 oct. 2008 à 19:59
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 251 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 22 avril 2009 41
23 oct. 2008 à 19:45
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 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
24 oct. 2008 à 15:02
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 18 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 1 novembre 2009
28 oct. 2008 à 13:30
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