Rechercher : dans
Par :

Selection des 5 dernieres lignes d'une table.

Dernière réponse le 29 oct 2008 à 20:34:54 princejude, le 23 oct 2008 à 19:08:46 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « selection des 5 dernieres lignes d'une table. » dans :
Sed - Supprimer une ou plusieurs lignes d'un fichier VoirSupprimer une (ou plusieurs) ligne(s) d'un fichier Syntaxe sed '{[/]||[/]}d' sed '{[/][,][/]d' /.../ = délimiteurs n = le numéro de ligne chaîne = la chaîne contenue dans la...
Tableur - La sélection des cellules VoirSélection de cellules Le tableur est un formidable outil pour manipuler des données. Ainsi, pour pouvoir manipuler les données il est nécessaire de disposer d'outils permettant de sélectionner rapidement toutes les cellules dont on a...
Tableaux HTML VoirUtilisation de tableaux Il est souvent utile de présenter des informations mieux structurées qu'avec des listes. Les tableaux permettent de les afficher en lignes et en colonnes. Les tableaux sont définis comme étant des suites de lignes. Un...
SQL - Création de table VoirLe SQL, comportant un langage de définition de données (LDD), permet de créer des tables. Pour cela, il utilise le couple de mots clés CREATE TABLE. La création de tables Le création de tables se fait à l'aide du couple de mots-clés CREATE...

1

macgawel, le 23 oct 2008 à 19:16:49

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" ?
Si tu donnes à celui qui a faim un poisson, tu le nourris pour un jour
Si tu lui apprends à pêcher, tu le nourris pour toujours.

Répondre à macgawel

2

princejude, le 23 oct 2008 à 19:27:14

Je dirai plutot les 5 derniers enregistrements dans une table.
En fait je cherche à ecrire une procedure stockée.

Répondre à princejude

3

macgawel, le 23 oct 2008 à 19:34:53

Oui, mais les 5 derniers par rapport à quoi ?

Parce que la notion de '5 derniers enregistrements' n'existe pas vraiment dans Oracle...
Si tu donnes à celui qui a faim un poisson, tu le nourris pour un jour
Si tu lui apprends à pêcher, tu le nourris pour toujours.

Répondre à macgawel

5

princejude, le 23 oct 2008 à 19:59:50

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.

Répondre à princejude

7

macgawel, le 24 oct 2008 à 14:11:03

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...
Si tu donnes à celui qui a faim un poisson, tu le nourris pour un jour
Si tu lui apprends à pêcher, tu le nourris pour toujours.

Répondre à macgawel

9

princejude, le 28 oct 2008 à 13:22:47

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

Répondre à princejude

6

princejude, le 23 oct 2008 à 19:59:51

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.

Répondre à princejude

4

Stef60, le 23 oct 2008 à 19:45:20

Bonsoir,
tu as un champs auto-incrementé ou un champs date dans ta table ?

Répondre à Stef60

8

chuka, le 24 oct 2008 à 15:02:52

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!!
@+

Répondre à chuka

10

princejude, le 28 oct 2008 à 13:30:21

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;

Répondre à princejude

11

chuka, le 28 oct 2008 à 14:00:41
  • +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...

Répondre à chuka

12

princejude, le 28 oct 2008 à 14:15:13

Merci pour ton aide CHUKA.
je vais le tester.

Répondre à princejude

13

 princejude, le 29 oct 2008 à 20:34:54

Ca marche à merveil!!!
merci encore pour ton aide:
c'etait yapo judicael de ITA

Répondre à princejude