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 :

comment ne sélectionner que le 1er enregistrement d'un groupe ?


Sujet :

Langage SQL

  1. #1
    Membre émérite
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 216
    Points : 2 306
    Points
    2 306
    Par défaut comment ne sélectionner que le 1er enregistrement d'un groupe ?
    Bonjour,

    je but sur un pb depuis ce matin. Je ne suis pas non plus un grand spécialiste en SQL, aussi je me tourne vers vous. Voici mon pb :

    j'ai une table avec disons 3 champs :

    Matricule dateValidite Present
    1 01/01/2004 O
    1 01/12/2007 N
    2 01/01/2003 O
    2 01/05/2005 N
    2 01/11/2007 O
    Etc...

    je voudrais une requete qui me retourne :

    Matricule dateValidite Present
    1 01/12/2007 N
    2 01/11/2007 O

    Cela est-il possible en une seule requète ?

    Merci de votre aide,
    Dany

  2. #2
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    ça dépend ce que tu appelles "premier" enregistrement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    having min(matricule) = matricule

  3. #3
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    J'ai un doute dû à la fatigue, mais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    select mt.matricule, mt.datevalidite, mt.present
    from matable mt
    where mt.matricule in 
    (select mt2.matricule, max(mt2.datevalidite) 
    from matable mt2
    where mt2.matricule = mt1.matricule)

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 103
    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 103
    Points : 28 394
    Points
    28 394
    Par défaut
    Je suppose que tu recherches la ligne la plus récente pour chaque matricule ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT  tbl.*
    FROM    matable AS tbl
    WHERE   EXISTS
            (   SELECT  0 
                FROM    matable AS der
                WHERE   tbl.matricule = der.matricule
                HAVING  tbl.datevalidite = MAX(der.datevalidite) 
            )
    ;

  5. #5
    Membre émérite
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 216
    Points : 2 306
    Points
    2 306
    Par défaut
    bonjour,

    merci pour votre réponse. C'est effectivement ce que je cherche à retrouver, malheureusement avec votre requète, Oracle me retourne un message d'erreur : "command not properly ended", pourtant j'ai beau regarder, je ne vois pas où est le problème...

    Merci pour votre aide,
    Dany

  6. #6
    Membre confirmé Avatar de Monstros Velu
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 619
    Points : 601
    Points
    601
    Par défaut
    Il fallait préciser dès le départ que c'était sous oracle ! Tu aurais même pu poster dans le forum approprié, et t'aurais eu des réponses correspondant à ton problème. Ne connaissant pas oracle et ne sachant pas que c'est ce que tu cherchais, j'aurai fait les même réponses que les autres.

  7. #7
    Membre émérite
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 216
    Points : 2 306
    Points
    2 306
    Par défaut
    bonjour,

    ben désolé, ça me semblait plus être un problème sql que oracle.

    Merci quand même,
    Dany

  8. #8
    Membre confirmé Avatar de Monstros Velu
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 619
    Points : 601
    Points
    601
    Par défaut
    Pas grave ;o) Mais apparement, la méthode est bonne. Ce qu'il manque, c'est la syntaxe, et ça, ça ne se trouve que sur le bon forum...

Discussions similaires

  1. [Mapping] One to Many ne ramène que le 1er enregistrement
    Par Manopower dans le forum Hibernate
    Réponses: 4
    Dernier message: 23/11/2011, 15h50
  2. N'utiliser que le 1er enregistrement?
    Par kouette dans le forum PL/SQL
    Réponses: 15
    Dernier message: 25/05/2011, 08h34
  3. Comment sélectionner que les lignes doublons
    Par Inconnu_du_69 dans le forum Langage SQL
    Réponses: 20
    Dernier message: 12/02/2009, 16h18
  4. Comment sélectionner que si c'est en minuscule ?
    Par tibofo dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/11/2008, 17h56

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