IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

rownum


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 314
    Par défaut rownum
    Bonjout,

    j'effectue une requête et je ne souhaites afficher que certaines lignes de celle-ci.
    J'ai donc rajouté une contrainte sur le rownum.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select * from demande
    where rownum>=1
    and rownum<21
    Cette requete me retournes bien les 20 premières lignes.

    Celle-ci les 10 premières :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select * from demande
    where rownum>=1
    and rownum<11
    Mais lorsque j'exécute celle-ci, je n'ai aucun résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select * from demande
    where rownum>=11
    and rownum<21
    Quelqu'un aurait-il une idée ?

    Merci

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Par défaut
    Bonjour
    que donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from demande where rownum between 11 and 21 ;

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 314
    Par défaut
    no rows returned

  4. #4
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut

    http://oracle.developpez.com/faq/?page=11#rownum

    La première ligne retourné par ton select a toujours comme rownum 1 donc si tu mets une condition rownum > 10, cela ne te ramènera aucun enregistrement (puisque de toute façon la première ligne ramenée par ton select aura rownum = 1).

    C'est pour cela que tu dois passer par une sous requête, comme indiqué dans la FAQ.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 314
    Par défaut
    avec le between je n'ai aucune ligne de retourner également.
    Je vais voir ce que donne les sous requêtes.

  6. #6
    Membre expérimenté Avatar de VinceTlse
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 163
    Par défaut
    C est assez déroutant.
    Faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select * from commune
    where rownum=1
    fonctionne.

    Mais pas ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select * from commune
    where rownum=2

  7. #7
    Membre Expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Par défaut
    On ne peut pas mettre rownum=2

    un peu de lecture chez ASKTOM : Rownum

  8. #8
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Citation Envoyé par VinceTlse
    C est assez déroutant.
    Faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select * from commune
    where rownum=1
    fonctionne.

    Mais pas ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select * from commune
    where rownum=2
    As-tu lu mon post ????

    ROWNUM = le numéro de ligne ramené par ta requête
    => donc si tu ramènes 10 enregistrements ils seront numérotés de 1 à 10
    Il est donc normal que where rownum = 2 ne ramène rien !

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 314
    Par défaut
    oui j'ai compris le fonctionnement de rownum. Cependant je voudrais savoir si personne ne sait comment s'y prendre.
    Habituellment j'effectue cette manipe sous MySQL et je dispose du mot clé limite mais sous oracle je n'ai aucune idée bien que je sais que c'est possible[/i]

  10. #10
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Ca a déja été débatu avec la limitation de Tris il me semble.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT ROWNUM, Q.numrow
    FROM ( SELECT ROWNUM numrow 
    		FROM MATABLE 
    		WHERE ROWNUM < 10
    	 ) Q
    WHERE Q.numrow BETWEEN 5 AND 7

  11. #11
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    La solution des sous requêtes ne te convient pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select *
    from (select demande.*, rownum rang from demande)
    where rang between 11 and 20;

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 314
    Par défaut
    merci plaineR ça marche nickel.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Equivalent de rownum sous SQL server
    Par Isildur dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 27/07/2009, 15h48
  2. Rownum et Group By
    Par Adi81 dans le forum Oracle
    Réponses: 10
    Dernier message: 30/08/2005, 10h44
  3. [Oracle 8i - SQL] Rownum et Rank Over
    Par Ajrarn dans le forum Oracle
    Réponses: 6
    Dernier message: 10/03/2005, 15h20
  4. SELECT à partir du ROWNUM
    Par MrSimon dans le forum SQL
    Réponses: 5
    Dernier message: 10/06/2003, 16h28
  5. PROGRESS- Obtenir le ROWNUM, ROWID, etc?!?
    Par nmathon dans le forum Requêtes
    Réponses: 4
    Dernier message: 27/05/2003, 14h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo