Précédent   Forum des professionnels en informatique > Bases de données > Autres SGBD > InterBase
InterBase Forum d'entraide sur le SGBD InterBase de Codegear. Avant de poster -> F.A.Q Interbase, Tutoriels
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/09/2007, 19h02   #1
Futur Membre du Club
 
Med Ali Meziane
Inscription : juillet 2006
Messages : 40
Détails du profil
Informations personnelles :
Nom : Med Ali Meziane
Âge : 47
Localisation : Tunisie

Informations forums :
Inscription : juillet 2006
Messages : 40
Points : 19
Points : 19
Par défaut [Interbase] Récupérer les N derniers enregistrements

Bonsoir tout le monde,
Je développe un petit programme en Delphi 7 avec une BDD Interbase et qui tourne sur 4 PCs en réseau local.
J'aime bien savoir comment récupérer les N derniers enregistrement d'une table Matable avec les champs Id, Nom, DateNaissance, Note.
J'ai beau consulté une large documentation, j'ai essayé pas mal d'exemples finalement je me trouve perdu
J'attend vos réponses avec impatience et merci d'avance
mameziane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2007, 21h55   #2
Expert Confirmé Sénior
 
Avatar de qi130
 
Homme Pierre
Ingénieur qualité méthodes
Inscription : mars 2003
Messages : 3 726
Détails du profil
Informations personnelles :
Nom : Homme Pierre
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Ingénieur qualité méthodes
Secteur : Finance

Informations forums :
Inscription : mars 2003
Messages : 3 726
Points : 4 739
Points : 4 739
Ta demande est un peu ambigue

En effet, la notion de rang/classement n'existe pas sur un SGBD, SAUF si on dit sur quel critère on souhaite se baser...

Dans ton cas, est-ce l'ID ? le nom ? la date de naissance ? autre chose ?
__________________
"Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
-----------------------
Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
Usus magister est optimus
qi130 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2007, 22h52   #3
Futur Membre du Club
 
Med Ali Meziane
Inscription : juillet 2006
Messages : 40
Détails du profil
Informations personnelles :
Nom : Med Ali Meziane
Âge : 47
Localisation : Tunisie

Informations forums :
Inscription : juillet 2006
Messages : 40
Points : 19
Points : 19
D'abord, Merci infinément de votre réponse.

En fait, MaTable possède un champs ID autoincrémentable avec un Générateur et un Trigger et puisque l'utilisateur ne peut pas voir le ID du nouvel enregistrement directement après la validation de la création j'ai voulu que les 10 derniers enregistrements créés s'affiche dans une grille (afin qu'il note sur ses dossiers en papier) le ID de la nouvelle fiche (10 parceque d'autres utilisateurs peuvent créer d'autres enregistrement entre temps).

J'ai essayé LIMIT , TOP ,... mais ça ne fonctionne pas.

Dans mes recherches multiples dans les forums de www.developpez.com, j'ai trouvé cette portion de code dans une réponse similaire, que j'aime bien avoir votre avis la dessus:

SELECT a.ID, a.Nom, a.DateNaissance
FROM MaTable a
LEFT OUTER JOIN MaTable b ON b.ID > a.ID
GROUP BY a.ID
HAVING count(b.ID)>=10

Est-ce qu'on peut faire mieux avec interbase ?
mameziane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2007, 23h25   #4
Modérateur
 
Avatar de Cl@udius
 
Homme Claude Renouleaud
Développeur informatique
Inscription : février 2006
Messages : 4 758
Détails du profil
Informations personnelles :
Nom : Homme Claude Renouleaud
Âge : 49
Localisation : France, Hautes Pyrénées (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2006
Messages : 4 758
Points : 6 779
Points : 6 779
Salut

Essaye ceci:
Par exemple: les 5 plus vieux
Code :
1
2
3
4
5
 
SELECT Id, Nom, DateNaissance, Note
FROM Matable
ORDER BY DateNaissance
rows 5;
Les 5 plus jeunes:
Code :
1
2
3
4
5
 
SELECT Id, Nom, DateNaissance, Note
FROM Matable
ORDER BY DateNaissance DESC
rows 5;
[edit] je viens de relire ton dernier message, et je me demande si je ne suis pas hors sujet...
[/edit]

@+ Claudius
__________________
A la question technique que par MP/MV tu formuleras, la réponse aux oubliettes finira.
Cl@udius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2007, 00h36   #5
Membre éclairé
 
Avatar de TryExceptEnd
 
Homme
Développeur informatique
Inscription : octobre 2006
Messages : 435
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2006
Messages : 435
Points : 347
Points : 347
Je ne sais pas si c'est utilisable sous Interbase mais avec Firebird ça marche :
Code :
1
2
3
SELECT FIRST 10 *
FROM Matable
ORDER BY Id DESCENDING
__________________
Si vous êtes libre, choisissez le Logiciel Libre.
TryExceptEnd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2007, 00h50   #6
Futur Membre du Club
 
Med Ali Meziane
Inscription : juillet 2006
Messages : 40
Détails du profil
Informations personnelles :
Nom : Med Ali Meziane
Âge : 47
Localisation : Tunisie

Informations forums :
Inscription : juillet 2006
Messages : 40
Points : 19
Points : 19
Eh ben là CHAPEAU, effectivement c'était ce fameu ROWS qui manquait.

Effectivement, en mettant un ORDER BY avec DESC et ROWS 5 j'ai pu afficher les 5 derniers enregistrements de MaTable.

En voici la requête complète:
Code :
1
2
3
4
 
SELECT a.id_enquete,a.num_enquete,a.donneur,a.nomraison,a.darrivee
FROM enquete a
ORDER BY id_enquete DESC ROWS 5
Biensure id_enquete est le champs autoincrémenté.
Merci pour TOUS des conseils
Bonne continuation
mameziane est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h31.


 
 
 
 
Partenaires

Hébergement Web