OVH Cloud OVH Cloud

[SQL] Derniers n-uplets

6 réponses
Avatar
Vincent
Bonjour,

J'aimerais récupérer, dans une table qui contient des mesures (<ME_CLEF,
ME_DEBUT, ME_VALEUR>), disons les 5 dernières mesures (les plus récentes).
Je galère à me dépatouiller avec un NOT EXISTS récalcitrant et je voudrais
savoir s'il n'existe pas de mot clé sql pouvant voler à mon secours. (je ne
suis pas expert en sql!).

Merci d'éclairer ma lanterne,

--
Vincent

6 réponses

Avatar
Michaël Bascou
Salut Vincent,

Le 24.07.2003 14:34, Vincent a écrit :
J'aimerais récupérer, dans une table qui contient des mesures (<ME_CLEF,
ME_DEBUT, ME_VALEUR>), disons les 5 dernières mesures (les plus récentes).
Je galère à me dépatouiller avec un NOT EXISTS récalcitrant et je voudrais
savoir s'il n'existe pas de mot clé sql pouvant voler à mon secours. (je ne
suis pas expert en sql!).



Utilise le champ 'critère' (un auto increment ou une date, je ne sais pas) avec
ORDER BY my_field DESC que tu limiteras au 5 premières lignes.

Sous MySQL, tu feras : [...] ORDER BY m_field DESC LIMIT 5

Sous Oracle, ça sera :
[...] WHERE rownum < 6 ORDER BY m_field DESC

Cdt,
Michaël
Avatar
Vincent
"Michaël Bascou" a écrit dans le message news:
bfokfp$g17$
Salut Vincent,

Utilise le champ 'critère' (un auto increment ou une date, je ne sais pas)


avec
ORDER BY my_field DESC que tu limiteras au 5 premières lignes.

Sous MySQL, tu feras : [...] ORDER BY m_field DESC LIMIT 5

Sous Oracle, ça sera :
[...] WHERE rownum < 6 ORDER BY m_field DESC



Merci pour cette piste. Je suis sous Interbase 6 (Borldand). J'espère que y
a ça quelque part...

--
Vincent
Avatar
Michaël Bascou
Le 24.07.2003 15:05, Vincent a écrit :
Merci pour cette piste. Je suis sous Interbase 6 (Borldand). J'espère que y
a ça quelque part...



Interbase, quelle idée ! lol ;)

Je ne connais pas trop l'actualité de Interbase, en parcourant vite fait la doc
du SELECT, j'ai pas trouvé de LIMIT. En cherchant un peu dans les FAQ, j'ai
trouvé ceci : http://ib.freeservers.com/#LIMIT

Le conseil était de créer une procédure stockée : http://www.mers.com/IB_0104.HTML

Ca me parait un peu lourd quand même ...

Cdt,
Michaël
Avatar
Vincent
"Michaël Bascou" a écrit dans le message news:
bfoo5e$ivg$
Le 24.07.2003 15:05, Vincent a écrit :
> Merci pour cette piste. Je suis sous Interbase 6 (Borldand). J'espère


que y
> a ça quelque part...

Interbase, quelle idée ! lol ;)

Je ne connais pas trop l'actualité de Interbase, en parcourant vite fait


la doc
du SELECT, j'ai pas trouvé de LIMIT. En cherchant un peu dans les FAQ,


j'ai
trouvé ceci : http://ib.freeservers.com/#LIMIT

Le conseil était de créer une procédure stockée :


http://www.mers.com/IB_0104.HTML

Ca me parait un peu lourd quand même ...



C'est clair que c'est bien compliqué pour peu de choses.... Tant pis!
<quote>
Does InterBase support the LIMIT / TOP predicate in a Select?
InterBase does not support the non-ANSI Standard LIMIT / TOP syntax. You can
write a Stored Procedure that is selectable and exits after the passed value
of iterations.
</quote>
Le choix de Interbase il est tout simple : je travaille sur du développement
Web, alors avec un serveur web + un serveur d'application (java), Oracle me
faisait tout ramer. Donc j'ai maintenant Interbase en évitant autant que
possible d'utiliser des spécificités du SGBD au niveau des requêtes SQL.
C'est dommage de rappatrier toute les données de la BD vers l'appli pour
n'en garder finalement que 5, mais bon... tant pis!

Merci en tout cas pour toutes ces infos.

--
Vincent
Avatar
Michaël Bascou
Le 24.07.2003 15:58, Vincent a écrit :
C'est clair que c'est bien compliqué pour peu de choses.... Tant pis!
<quote>
Does InterBase support the LIMIT / TOP predicate in a Select?
InterBase does not support the non-ANSI Standard LIMIT / TOP syntax. You can
write a Stored Procedure that is selectable and exits after the passed value
of iterations.
</quote>



Note que cette FAQ est ancienne et doit concerner une version antérieure à la
tienne. LIMIT est peut être implémenté depuis ... mais pas trouvé :(

Bon courage ;)

Michaël
Avatar
Christophe Garault
Dans le message <bfool5$jeb$,
Vincent écrivit...

Le choix de Interbase il est tout simple : je travaille sur du développement
Web, alors avec un serveur web + un serveur d'application (java), Oracle me
faisait tout ramer.




Franchement si vous ne trouvez pas Oracle suffisament rapide il
n'y a plus guère que DB2. Je ne vois vraiment pas en quoi Interbase
pourrait améliorer quoique ce soit. A moins que vous n'ayez installé le
serveur Apache, Tomcat, votre serveur d'appli (Jonas?) et le SGBD sur
la même machine, mais ça je n'ose y croire. ;-)

BTW est-ce qu'Interbase supporte les raw device parce que sinon hein...

Donc j'ai maintenant Interbase en évitant autant que
possible d'utiliser des spécificités du SGBD au niveau des requêtes SQL.




Ha le St Graal de la portabilité du SQL! Perso ça fait longtemps
que j'ai laissé tomber. Je trouve beaucoup plus judicieux de mettre
TOUT le code SQL en procédures stockées et fonctions (en utilisant au
mieux les fonctionnalités du SGBD), quitte à recoder tout ça si un
client réclame le portage sur un autre SGBD.

--
Vous avez beau dire, y'a pas seulement que de la pomme, y'a autre
chose, ce serait pas des fois de la betterave ? Hein ?