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

Langage SQL Discussion :

Problème avec une requête sql


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 217
    Points : 121
    Points
    121
    Par défaut Problème avec une requête sql
    Bonjour j'essaye d'exécuter une simple requête sql afin d'afficher les 3 premières lignes de celle-ci par exemple et voici l'erreur que je reçoit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORA-00933: SQL command not properly ended
    Voici ma requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from FAQ LIMIT 0 , 2;
    Quelqu'un peut-il m'aider?

    Merci d'avance

  2. #2
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 288
    Points : 375
    Points
    375
    Par défaut
    Il n'existe pas de commande LIMIT sous oracle, on n'est obligé de passer par un autre chemin pour arriver à ces fins :

    La réponse était dans la FAQ oracle de developpez.com (toujours penser à la regarder!!! )


    http://php.developpez.com/faq/index....e#oracle-limit

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 217
    Points : 121
    Points
    121
    Par défaut
    Citation Envoyé par DroP Voir le message
    Il n'existe pas de commande LIMIT sous oracle, on n'est obligé de passer par un autre chemin pour arriver à ces fins :

    La réponse était dans la FAQ oracle de developpez.com (toujours penser à la regarder!!! )


    http://php.developpez.com/faq/index....e#oracle-limit
    Merci Cela marche pour ce que je veut faire dans mon code php....

    Bonne journée

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 217
    Points : 121
    Points
    121
    Par défaut
    J'ai encore une petite question à 5 cents...

    Voici ma requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from(select FAQ_ID, QUESTION, rownum as n from faq ) where n between 0 and 6 order by question asc
    Cette requête fonctionne mais j'aimerais bien retrouver ma liste de questions triée correctement, ce qui n'est pas le cas ici car si je vais voir la rownum 7 elle aurait dû apparaitre dans mon select ... order by

    Comment pourrais-je faire pour régler ce détail?

    Merci

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 801
    Points
    30 801
    Par défaut
    Une requête SELECT sans clause ORDER BY retourne les lignes dans un ordre aléatoire.
    ROWNUM ne fait que numéroter ces lignes... aléatoirement.
    Il faut ajouter une clause ORDER BY dans la sous-requête.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select * 
    from (select FAQ_ID, QUESTION, rownum as n 
          from faq 
          order by question asc
         ) 
    where n between 0 and 6 
    order by n
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 217
    Points : 121
    Points
    121
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    Une requête SELECT sans clause ORDER BY retourne les lignes dans un ordre aléatoire.
    ROWNUM ne fait que numéroter ces lignes... aléatoirement.
    Il faut ajouter une clause ORDER BY dans la sous-requête.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select * 
    from (select FAQ_ID, QUESTION, rownum as n 
          from faq 
          order by question asc
         ) 
    where n between 0 and 6 
    order by n
    Voici les résultats que j'obtiens en exécutant cette requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        FAQ_ID QUESTION                                                                             
    ---------- -------------------------------------------------------------------------------------
             0 Lorsque, j'essaye de me connecter, rien ne se passe.                                 
             1 Lorsque j'essaye de me connecter, je reçoit le message "quota de connexion atteint". 
             2 J'ai oublié mes identifiants de connexion.                                           
             3 Le fichier CSV ne s'ouvre pas.                                                       
             4 Impossible d'imprimer dans le fichier pdf.
    Ma liste de question n'est donc pas trié mais la colonne n l'est bien....

    Comment faire?

  7. #7
    Membre confirmé
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Points : 562
    Points
    562
    Par défaut
    Et ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Select rownum , F.* from (select * from faq order by fac_id) F
    Where rownum < 5
    Signé : Capitaine Jean-Luc Picard

  8. #8
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 217
    Points : 121
    Points
    121
    Par défaut
    Citation Envoyé par argoet Voir le message
    Et ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Select rownum , F.* from (select * from faq order by fac_id) F
    Where rownum < 5
    Moi j'ai fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from(select FAQ_ID, QUESTION from faq order by question asc) where rownum between 0 and 5
    Cela fait bien ce que je veut mais si je veut faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from(select FAQ_ID, QUESTION from faq order by question asc) where rownum between 5 and 6
    Il ne me trouve pas la ligne 6 alors qu'elle existe bien.

    Par contre si je fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from(select FAQ_ID, QUESTION from faq order by question asc) where rownum between 0 and 6
    Ma ligne apparait bien.

    J'y perd mon latin

    Pourquoi ne prend-t-il que les 5 premères lignes?.

  9. #9
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 217
    Points : 121
    Points
    121
    Par défaut
    Çà y est, après de nombreux tests, j'ai enfin trouvé la bonne requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT faq_id,question FROM (SELECT ROWNUM num, faq_id, question FROM (SELECT * FROM faq ORDER BY question)) WHERE num BETWEEN 6 AND 10 ORDER BY question
    Cette fois-ci tout est OK....

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

Discussions similaires

  1. Problème avec une requête SQL en C#
    Par valebl dans le forum C#
    Réponses: 15
    Dernier message: 16/04/2008, 20h01
  2. Petit problème avec une requête SQL en VB6
    Par muzele dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 15/11/2007, 20h51
  3. [SQL] Problème avec une requête sql
    Par bodysplash007 dans le forum PHP & Base de données
    Réponses: 22
    Dernier message: 11/05/2007, 17h30
  4. [MySQL] Problème avec une requête SQL
    Par chobol dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 11/05/2006, 12h29
  5. [VB]Problème avec une requête SQL
    Par Tyrael62 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 18/03/2006, 17h47

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