Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/09/2011, 12h08   #1
Membre habitué
 
Inscription : juin 2006
Messages : 487
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 487
Points : 136
Points : 136
Par défaut Requête select filtrée sur un select

Bonjour,

J'ai une requête :

Code :
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
jacko842 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 12h17   #2
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 440
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 440
Points : 4 183
Points : 4 183
Avec une fonction de group : max et group by
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 12h33   #3
Membre habitué
 
Inscription : juin 2006
Messages : 487
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 487
Points : 136
Points : 136
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
jacko842 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 12h45   #4
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 446
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 446
Points : 7 543
Points : 7 543
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 :
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
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 13h27   #5
Membre habitué
 
Inscription : juin 2006
Messages : 487
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 487
Points : 136
Points : 136
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
jacko842 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 13h47   #6
Membre expérimenté
 
Homme Mohamed Houri
Inscription : mars 2010
Messages : 286
Détails du profil
Informations personnelles :
Nom : Homme Mohamed Houri
Localisation : France

Informations forums :
Inscription : mars 2010
Messages : 286
Points : 563
Points : 563
Et ça? Ca répond à votre demande?

Code :
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 :
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
__________________
Bien Cordialement
www.hourim.wordpress.com
Mohamed.Houri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 14h58   #7
Membre habitué
 
Inscription : juin 2006
Messages : 487
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 487
Points : 136
Points : 136
Oui merci ça répond bien à ma demande
Avez vous de la doc sur ce type de requête sql .

Un grand merci .
jacko842 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h01.


 
 
 
 
Partenaires

Hébergement Web