Sélectionner nième entrée d'une table

Sélectionner nième entrée d'une table - SQL/NoSQL - Programmation

Marsh Posté le 20-04-2007 à 10:29:36    

Salut,
 
J'aimerais sélectionner la 20ème entrée d'une table mais je ne sais pas comment coder mon select
Quelqu'un a une idée?

Reply

Marsh Posté le 20-04-2007 à 10:29:36   

Reply

Marsh Posté le 20-04-2007 à 10:31:41    

avec mysql, utilise "limit 20,1" si je ne m'abuse
 
avec d'autres SGBD c'est plus compliqué

Reply

Marsh Posté le 20-04-2007 à 10:42:41    

La requete suivante ne marche pas :-/
select * from matable limit 20,1;
 
"ERREUR à la ligne 1 :
ORA-00933: SQL command not properly ended"

Reply

Marsh Posté le 20-04-2007 à 11:07:17    

Bon il parait qu'on peut sinon essayer avec rownum. Je vais voir...

Reply

Marsh Posté le 20-04-2007 à 11:16:31    

si tu parles de rownum, c'est que t'es sous Oracle... je t'ai dit que le LIMIT c'était que pour MySQL :o

Reply

Marsh Posté le 20-04-2007 à 11:16:32    

Avec rownum ça marche si je veux les n premières entrées de ma table mais ça marche pas ni pour  les n dernieres ni pour la nième

Reply

Marsh Posté le 20-04-2007 à 11:17:00    

PLEASE HELP! ;-/

Reply

Marsh Posté le 20-04-2007 à 11:19:44    

Avec Oracle 10g :
 

Code :
  1. SELECT *
  2. FROM
  3. (
  4.     SELECT *
  5.     FROM
  6.     (
  7.         SELECT *
  8.         FROM pro
  9.         WHERE codsoc = 2
  10.         ORDER BY codpro
  11.     )
  12.     WHERE rownum <= 20 -- (1)
  13.     ORDER BY codpro DESC
  14. )
  15. WHERE rownum <= 1 -- (2)
  16. ORDER BY codpro


 
1 : Numéro de la dernière ligne désirée
2 : Nombre de lignes désiré


Message édité par MagicBuzz le 20-04-2007 à 11:40:18
Reply

Marsh Posté le 20-04-2007 à 11:20:29    

MagicBuzz a écrit :

si tu parles de rownum, c'est que t'es sous Oracle... je t'ai dit que le LIMIT c'était que pour MySQL :o


oui dsl je suis en effet sous oracle 9i

Reply

Marsh Posté le 20-04-2007 à 11:22:50    

Essaie cette syntaxe avec la 9i.
 
Je ne sais plus depuis quelle version les "ORDER BY" dans un sous-select son autorisés sous Oracle.
Si ça ne passe pas, alors tu n'as pas d'autre choix que de faire un simple select * avec un tri, puis seeker directement la ligne désirée dans ton résultat.
Tu peux le faire via PL/SQL si ton tuyau entre le SGBD et ton application est limité en vitesse.

Reply

Marsh Posté le 20-04-2007 à 11:22:50   

Reply

Marsh Posté le 20-04-2007 à 11:41:01    

-- Je viens de modifier un peu la requête : y'avait une erreur (non applicable dans le cas d'une unique ligne sélectionnée) et un <= X est mieux que < X + 1 ;)

Reply

Marsh Posté le 02-12-2008 à 13:32:00    

En fait j'ai trouvé une feinte en ORACLE ;
SELECT     NIND
FROM       MATABLE
GROUP BY NIND, ROWNUM
HAVING    ROWNUM = 2
 
Voilà.


Message édité par samgratt_le_vrai le 02-12-2008 à 13:38:30
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed