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 :

Demande requête


Sujet :

Oracle

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Points : 443
    Points
    443
    Par défaut Demande requête
    Bonsoir,

    Je possède d'une table produit et j'aimerais savoir s'il vous plait comment établir une requête qui m'affiche seulement le top 3 premiers enregistrements dans ma table ou trois enregistrement au hazard parmi tous les enregistrements dans la table.
    Merci

  2. #2
    Membre expert

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2012
    Messages
    612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2012
    Messages : 612
    Points : 3 066
    Points
    3 066
    Par défaut
    Bonjour,

    Quelques règles à respecter pour les demandes d'aide sur des requêtes SQL : http://www.developpez.net/forums/a69...gage-sql-lire/

    Qu'entendez-vous par "top 3" ? "Top" selon quel critère ?

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Points : 443
    Points
    443
    Par défaut
    ça veut dire par exemple je souhaite afficher les trois premier enregistrements (par exemple Produit) selon leur date

  4. #4
    Membre averti
    Avatar de ora_home
    Homme Profil pro
    Consultant Oracle
    Inscrit en
    Février 2009
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Consultant Oracle
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 103
    Points : 376
    Points
    376
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     SELECT * FROM PRODUIT WHERE ROWNUM < 4 ORDER BY DATE

  5. #5
    Membre expert

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2012
    Messages
    612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2012
    Messages : 612
    Points : 3 066
    Points
    3 066
    Par défaut
    Citation Envoyé par ora_home Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     SELECT * FROM PRODUIT WHERE ROWNUM < 4 ORDER BY DATE
    Ceci ne fonctionne pas : la pseudo-colonne ROWNUM est assignée avant le ORDER BY.

    ahmedpa > Vos messages ne donnent pas envie de prendre le temps de vous aider.

  6. #6
    Membre expert

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2012
    Messages
    612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2012
    Messages : 612
    Points : 3 066
    Points
    3 066
    Par défaut
    Histoire de ne pas faire le gros rabat-joie.

    Ce qui ne marche pas :
    Code : 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
    SQL>WITH T AS (
      SELECT 3 AS NUM, SYSDATE - 3 AS DT FROM DUAL
      UNION ALL
      SELECT 5 AS NUM, SYSDATE - 5 AS DT FROM DUAL
      UNION ALL
      SELECT 1 AS NUM, SYSDATE - 1 AS DT FROM DUAL
      UNION ALL
      SELECT 2 AS NUM, SYSDATE - 2 AS DT FROM DUAL
      UNION ALL
      SELECT 4 AS NUM, SYSDATE - 4 AS DT FROM DUAL
    )
    SELECT * FROM T
    WHERE ROWNUM < 4
    ORDER BY DT
    ;
     
    NUM DT     
    --- --------
      5 01/03/13 
      3 03/03/13 
      1 05/03/13
    Ce qui marche :
    Code : 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
     
    SQL> WITH T AS (
      SELECT 3 AS NUM, SYSDATE - 3 AS DT FROM DUAL
      UNION ALL
      SELECT 5 AS NUM, SYSDATE - 5 AS DT FROM DUAL
      UNION ALL
      SELECT 1 AS NUM, SYSDATE - 1 AS DT FROM DUAL
      UNION ALL
      SELECT 2 AS NUM, SYSDATE - 2 AS DT FROM DUAL
      UNION ALL
      SELECT 4 AS NUM, SYSDATE - 4 AS DT FROM DUAL
    )
    SELECT * FROM (
      SELECT * FROM T
      ORDER BY DT
    )
    WHERE ROWNUM < 4
    ;
     
    NUM DT     
    --- --------
      5 01/03/13 
      4 02/03/13 
      3 03/03/13

  7. #7
    Membre actif Avatar de Ahmed AANGOUR
    Homme Profil pro
    DBA Oracle
    Inscrit en
    Janvier 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : DBA Oracle

    Informations forums :
    Inscription : Janvier 2010
    Messages : 139
    Points : 271
    Points
    271
    Par défaut
    Bonjour,

    une autre solution qui marche aussi:
    Code : 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
    WITH T AS (
      SELECT 3 AS NUM, SYSDATE - 3 AS DT FROM DUAL
      UNION ALL
      SELECT 5 AS NUM, SYSDATE - 5 AS DT FROM DUAL
      UNION ALL
      SELECT 1 AS NUM, SYSDATE - 1 AS DT FROM DUAL
      UNION ALL
      SELECT 2 AS NUM, SYSDATE - 2 AS DT FROM DUAL
      UNION ALL
      SELECT 4 AS NUM, SYSDATE - 4 AS DT FROM DUAL
    )
    select num,dt from
        (
        select NUM, dt, dense_rank() over (order by dt) DR
        from T
        ) where DR <=3;
    ce post m'a rappelé que j'avais écrit un article sur ce sujet il y'a quelques mois:
    http://ahmedaangour.blogspot.fr/2012...une-table.html

Discussions similaires

  1. Demande Requête SQL
    Par SierraGolf3 dans le forum Firebird
    Réponses: 2
    Dernier message: 21/01/2015, 10h26
  2. demande requête sql sous delphi 7
    Par wiski08000 dans le forum Débuter
    Réponses: 15
    Dernier message: 17/12/2013, 16h44
  3. Demande requête SQL
    Par praksh dans le forum SQL
    Réponses: 2
    Dernier message: 12/09/2013, 11h58
  4. Demande Requête SQL
    Par TCHITCHOO dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/06/2010, 09h53

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