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

SQL Oracle Discussion :

Erreur ROWNUM et ORDER BY


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 2
    Par défaut Erreur ROWNUM et ORDER BY
    Bonjour,

    Après multiples recherches, je ne trouve toujours pas...

    Je veux faire un rownum de 10 à 20 par exemple et un order by

    Voici la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT BORDEREAU , LIBELLE, TYPE_BOR, OBLIGATOIRE, ROLE, VERIF_TT, ROW_NUMBER() OVER (ORDER BY BORDEREAU) NUM
     FROM BORDEREAU WHERE SIGLE = 'ETP' AND R BETWEEN 10 AND 30
    Erreur : keyword not found where expected
    Le row_number est pas connu

    Autre requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM (SELECT A.*, ROWNUM RNUM FROM (SELECT BORDEREAU, LIT_LIBELLE_SB(N_LIB,1) LIBELLE, TYPE_BOR, OBLIGATOIRE, ROLE, VERIF_TT FROM BORDEREAU WHERE SIGLE = 'ETP' ORDER BY BORDEREAU) A WHERE ROWNUM <= 10) WHERE RNUM >= 0
    Erreur : missing right parenthesis
    Il n'aime pas le order by dans la requête imbriquée.

    J'arrive bien à récupérer mais rownum de 10 à 20 mais ces enregistrements sont pas triés.

    Merci de votre aide

  2. #2
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 20
    Par défaut
    Bonjour,

    Je tente une réponse alors je pense que les pro d'oracle pourront me corriger sans problème...
    soyez indulgent, c'est ma 1ere réponse ^^


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT BORDEREAU , LIBELLE, TYPE_BOR, OBLIGATOIRE, ROLE, VERIF_TT, ROW_NUMBER() OVER (ORDER BY B.BORDEREAU) NUM
    FROM BORDEREAU WHERE SIGLE = 'ETP' AND R BETWEEN 10 AND 30

    Tu dois avoir un souci avec le fait de renommer des tables...
    Tu fais order by(b. bordereau) mais rien ne s'appelle b dans ta requête...



    Pour ta deuxieme requete :
    est ce que ton morceau de requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT BORDEREAU, LIT_LIBELLE_SB(N_LIB,1) LIBELLE, TYPE_BOR, OBLIGATOIRE, ROLE, VERIF_TT FROM BORDEREAU WHERE SIGLE = 'ETP' ORDER BY BORDEREAU
    fonctionne??

  3. #3
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 2
    Par défaut
    Pour le B. c'est une erreur de ma part mais cela ne change rien... il faut pas le mettre mais la requête ne fonctionne pas à cause de row_number !

    Ensuite pour ta seconde requête, oui elle marche parfaitement, j'arrive a récupérer tous mes enregistrements triés mais pas ceux du numéro 10 à 20.

  4. #4
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    Bojour,


    Quelle version Oracle as tu ?

    car en 11G

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    select * from bordereau order by bordereau;
     
    ---------- ---------- -------------------- --- ---------- ---------- --------------------
          1000                                                           ETP
          2000                                                           ETP
          3000                                                           ETP
          4000                                                           ETP
          5000                                                           ETP
          6000                                                           ETP
          7000                                                           ETP
          8000                                                           ETP
          9000                                                           ETP
         18000                                                           ETP
         19000                                                           ETP
     
     
     
     SELECT *
      2  FROM
      3         (SELECT A.*,
      4                 ROWNUM RNUM
      5         FROM
      6                 (SELECT  BORDEREAU  ,
      7                          N_LIB      ,
      8                          1 LIBELLE  ,
      9                          TYPE_BOR   ,
     10                          OBLIGATOIRE,
     11                          ROLE       ,
     12                          VERIF_TT
     13                 FROM     BORDEREAU
     14                 WHERE    SIGLE = 'ETP'
     15                 ORDER BY BORDEREAU
     16                 ) A
     17         WHERE   ROWNUM <= 10
     18         )
     19  WHERE  RNUM >= 5;
     
     BORDEREAU      N_LIB    LIBELLE TYPE_BOR             OBL ROLE         VERIF_TT       RNUM
    ---------- ---------- ---------- -------------------- --- ---------- ---------- ----------
          5000                     1                                                         5
          6000                     1                                                         6
          7000                     1                                                         7
          8000                     1                                                         8
          9000                     1                                                         9
         18000                     1                                                        10

  5. #5
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 20
    Par défaut
    ça doit donc être un problème version en effet, car la requête est bonne normalement...

  6. #6
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Salut !

    En tous cas, pour ta première solution, il me semble qu'il faut encapsuler :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT * FROM (
    SELECT BORDEREAU , LIBELLE, TYPE_BOR, OBLIGATOIRE, ROLE, VERIF_TT, ROW_NUMBER() OVER (ORDER BY BORDEREAU) NUM
     FROM BORDEREAU 
     WHERE SIGLE = 'ETP' 
     ) t
     WHERE NUM BETWEEN 10 AND 30
    Et sinon, c'est quoi la ta version d'Oracle ?

Discussions similaires

  1. Réponses: 11
    Dernier message: 11/02/2013, 14h23
  2. [ASE-15.0.2] Load dump 12.0.3 (erreur MSG 5824 - sort order)
    Par msomso dans le forum Adaptive Server Enterprise
    Réponses: 5
    Dernier message: 11/09/2007, 11h40
  3. ORDER et ROWNUM
    Par miloux32 dans le forum SQL
    Réponses: 4
    Dernier message: 02/08/2007, 15h41
  4. ORDER BY et Rownum
    Par dd16 dans le forum Oracle
    Réponses: 2
    Dernier message: 15/11/2006, 16h22
  5. [union][order by]Une erreur ?
    Par Amidal dans le forum Requêtes
    Réponses: 9
    Dernier message: 15/06/2006, 13h57

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