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 :

Aide sur une requete de sélection


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2003
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 17
    Points : 17
    Points
    17
    Par défaut Aide sur une requete de sélection
    Bonjour,

    Je voudrais récupérer les 5 dates les plus récentes d'une table. Je m'explique : je voudrais faire ça 5 fois.

    SELECT MAXI(DATE) FROM DATE

    Merci de m'aider

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT a.date
    FROM  Date a, Date b
    WHERE a.date <= b.date
    GROUP BY a.date
    HAVING COUNT(*) <= 5
    Attention :
    Le code ci-dessus ne fonctionne bien que si les dates sont toutes différentes (ce qui est plausible si tes dates sont des timestamps).
    Ce code n'est pas très performant : si tu connais une borne pour la 5 ième date c'est mieux et tu ajoutes
    Evite de donner le nom "date" à des colonnes ou a des tables, date risquant d'être un mot clé, mais tu n'as peut-être écris cela qu'à titre d'exemple

    (Sur une idée de Joe Celko)
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  3. #3
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Si les dates sont identiques, tu peux essayer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT a.date 
    FROM  (SELECT DISTINCT date FROM Date)  a, 
          (SELECT DISTINCT date FROM Date)  b
    WHERE a.date <= b.date 
    GROUP BY a.date 
    HAVING COUNT(*) <= 5
    Si tu connais la borne, il faut l'ajouter aux select intérieurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT Date FROM Date WHERE Date > Borne
    et si ta colonne contient aussi l'heure et que tu veux les 5 dates sans les heures il faut remplacer les select intérieurs par (syntaxe Oracle, mais dispo dans tous les SGBDR)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT TRUNC(Date) FROM Date WHERE Date > Borne
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  4. #4
    Membre expérimenté
    Avatar de Bloon
    Homme Profil pro
    Consultant Freelance
    Inscrit en
    Avril 2002
    Messages
    467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant Freelance
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2002
    Messages : 467
    Points : 1 339
    Points
    1 339
    Par défaut
    Solution Oracle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT *
    FROM (SELECT *
          FROM LATABLE
          ORDER BY LADATE DESC)
    WHERE ROWNUM <= 5
    Bloon
    A lire : Les règles du club
    Delphi : La FAQ - Articles

  5. #5
    Membre à l'essai
    Inscrit en
    Janvier 2003
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 17
    Points : 17
    Points
    17
    Par défaut
    Ok merci bien pour toutes ces solutions... ça marche super

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

Discussions similaires

  1. [Debutant] Aide sur une requete normée
    Par Wisefool dans le forum Oracle
    Réponses: 2
    Dernier message: 14/04/2006, 18h41
  2. Besoin d'aide sur une requete ds un trigger
    Par ideal dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 15/02/2006, 10h05
  3. [MySQL] aide sur une requete
    Par dj-julio dans le forum Langage SQL
    Réponses: 5
    Dernier message: 12/01/2006, 14h25
  4. Réponses: 1
    Dernier message: 03/08/2005, 11h41
  5. petite aide sur une requete INSERT INTO
    Par bonneti dans le forum Langage SQL
    Réponses: 3
    Dernier message: 14/03/2005, 15h17

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