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 :

Requête select filtrée sur un select


Sujet :

SQL Oracle

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    661
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 661
    Par défaut Requête select filtrée sur un select
    Bonjour,

    J'ai une requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT *
      FROM glit_situation s
           INNER JOIN patients p
              ON p.numpat = s.numpat
          LEFT OUTER JOIN objets x
              ON x.NUMEVE = s.NUMHOSPI AND x.NUMSERV = 41
     WHERE numus = 208
    Le résultat :

    111 DUPONT HENRI 20/09/2011
    111 DUPONT HENRI 18/09/2011
    111 DUPONT HENRI 17/09/2011
    222 DUCOBU STEF 18/09/2011
    333 PIERRE PIERRE 19/09/2011
    444 PILON JEAN 20/09/2011
    555 ALBERT BRUNO 15/09/2011

    Je voudrai obtenir :

    111 DUPONT HENRI 20/09/2011
    222 DUCOBU STEF 18/09/2011
    333 PIERRE PIERRE 19/09/2011
    444 PILON JEAN 20/09/2011
    555 ALBERT BRUNO 15/09/2011

    Je voudrai garder uniquement dans mon résultat un patient mais avec la date la plus vielle pour avoir qu'une ligne par patients différents .

    Mais je connais pas la syntaxe .

    D'avance merci

  2. #2
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Avec une fonction de group : max et group by

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    661
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 661
    Par défaut
    Ok mais le problème c est que je dois aussi récupérer les données des autres champs .

    exemple :

    Le résultat :

    111 DUPONT HENRI 20/09/2011 texte 3
    111 DUPONT HENRI 18/09/2011 texte 2
    111 DUPONT HENRI 17/09/2011 texte 1
    222 DUCOBU STEF 18/09/2011 texte 1
    333 PIERRE PIERRE 19/09/2011 texte 1
    444 PILON JEAN 20/09/2011 texte 1
    555 ALBERT BRUNO 15/09/2011 texte 1

    Je voudrai obtenir :

    111 DUPONT HENRI 20/09/2011 texte 3
    222 DUCOBU STEF 18/09/2011 texte 1
    333 PIERRE PIERRE 19/09/2011 texte 1
    444 PILON JEAN 20/09/2011 texte 1
    555 ALBERT BRUNO 15/09/2011 texte 1

    Merci

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    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 134
    Par défaut
    La requête pour obtenir ce type de résultat a déjà été exposée de nombreuses fois sur ces forums.

    En l'absence de connaissance de la structure de vos tables, il est difficile de préparer une requête qui réponde à votre besoin propre.

    Le principe est celui-ci, à vous de l'adapter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT  *
    FROM    matable det
    WHERE   EXISTS
            (   SELECT  1
                FROM    matable lkp
                WHERE   sel.id_patient  = lkp.id_patient
                HAVING  sel.dt_date     = MAX(lkp.dt_date)
            )
    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.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    661
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 661
    Par défaut
    Et si je mets ma première requête dans une View, pour qu'en suite je puisse faire de nouveau un select dessus.

    ça ne serait pas plus simple ?

    Merci

  6. #6
    Membre Expert

    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    536
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 536
    Par défaut
    Et ça? Ca répond à votre demande?

    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
     
    create table table_t (id number, name varchar2(30), dat date, small_vc varchar2(5));
     
    insert into table_t values (111,'DUPONT HENRI', to_date('20/09/2011','DD/MM/YYYY'),'x1');
     
    insert into table_t values (111,'DUPONT HENRI', to_date('18/09/2011','DD/MM/YYYY'),'x1');
     
    insert into table_t values (111,'DUPONT HENRI', to_date('17/09/2011','DD/MM/YYYY'),'x1');
     
    insert into table_t values (222,'DUCOBU STEF', to_date('18/09/2011','DD/MM/YYYY'),'x1');
     
    insert into table_t values (333,'PIERRE PIERRE', to_date('19/09/2011','DD/MM/YYYY'),'x1');
     
    insert into table_t values (444,'PILON JEAN', to_date('20/09/2011','DD/MM/YYYY'),'x1');
     
    insert into table_t values (555,'ALBERT BRUNO', to_date('15/09/2011','DD/MM/YYYY'),'x1');
     
    commit;
    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
     
     
    select id, name, dat, small_vc
    from (select 
                 id
                ,name
                ,dat
                ,small_vc
               , ROW_NUMBER() OVER (PARTITION BY id ORDER  BY dat DESC) rn
           from table_t
          )
    where rn = 1;
     
            ID NAME                           DAT       SMALL
    ---------- ------------------------------ --------- -----
           111 DUPONT HENRI                   20-SEP-11 x1
           222 DUCOBU STEF                    18-SEP-11 x1
           333 PIERRE PIERRE                  19-SEP-11 x1
           444 PILON JEAN                     20-SEP-11 x1
           555 ALBERT BRUNO                   15-SEP-11 x1

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    661
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 661
    Par défaut
    Oui merci ça répond bien à ma demande
    Avez vous de la doc sur ce type de requête sql .

    Un grand merci .

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

Discussions similaires

  1. copie d'une selection filtrée sur une autre feuille
    Par biboulou dans le forum Excel
    Réponses: 2
    Dernier message: 15/08/2011, 15h44
  2. Réaliser une requête croisée basée sur une Select
    Par sakia dans le forum VBA Access
    Réponses: 6
    Dernier message: 15/09/2010, 17h25
  3. [AC-2007] Requête avec filtre sur caractère #
    Par damsmut dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 24/11/2009, 13h21
  4. Filtre sur un select
    Par uskiki85 dans le forum Langage
    Réponses: 11
    Dernier message: 20/10/2009, 16h51
  5. [MySQL] Requête de filtre sur les dates
    Par Mathieu72 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 04/01/2007, 11h18

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