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 actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    661
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 661
    Points : 244
    Points
    244
    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 éminent

    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
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Avec une fonction de group : max et group by

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 661
    Points : 244
    Points
    244
    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 102
    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 102
    Points : 28 399
    Points
    28 399
    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)
            )

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 661
    Points : 244
    Points
    244
    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 expérimenté

    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
    Points : 1 359
    Points
    1 359
    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 actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    661
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 661
    Points : 244
    Points
    244
    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