Bonjour,
J'ai deux vues(a et b) concernant des personnes, je voudrais afficher les personnes de la vue a qui ne sont pas dans la vue b.
Comment puis je faire ???
Les champs en communs sont nom, prénom, n°nat
D'avance merci
Bonjour,
J'ai deux vues(a et b) concernant des personnes, je voudrais afficher les personnes de la vue a qui ne sont pas dans la vue b.
Comment puis je faire ???
Les champs en communs sont nom, prénom, n°nat
D'avance merci
sous Oracle, tu peux utiliser MINUS
sous les autres tu trouves NOT EXISTS IN
En classique,tu mets
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 select A.nom, A.prénom, A.n°nat from vue_A A left join vue_B B on A.n_nat=B.n_nat where B.n_nat is null
Ok merci de ton aide mais avec cette requête il me manque des enregistrements:
L'enregistrement dont le numpat est 459856 qui est connu des deux vues ne retrouve pas dans mon résultat.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT a.NOM,a.PRENOM,a.NUMPAT FROM V_CHHF_LIST_DICT_DATE a LEFT JOIN V_CHHF_MED_NUC B ON a.NUMPAT=b.NUMPAT WHERE b.NUMPAT IS NULL AND B.numpat=459856![]()
Ben c'est la jointure inverse !
Tu peux aussi utiliser NOT EXISTS qui peut être plus efficace si le volume de données est important :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT B.nom, B.prénom, B.n°nat FROM vue_B B LEFT JOIN vue_A A ON A.n_nat=B.n_nat WHERE A.n_nat IS NULL
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT B.nom, B.prénom, B.n°nat FROM vue_B B WHERE NOT EXISTS ( SELECT * FROM vue_A A WHERE A.n_nat=B.n_nat )
Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
CinePhil
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 with vue_A as (SELECT 'AAA' nom, 'A' prénom, 1 n_nat from dual union SELECT 'BBB' nom, 'B' prénom, 2 n_nat from dual union SELECT 'CCC' , 'C' , 3 from dual union SELECT 'DDD' , 'D' , 4 from dual union SELECT 'EEE' , 'E' , 5 from dual union SELECT 'FFF' , 'F' , 6 nat from dual union SELECT 'GGG' , 'G' om, 7 from dual ), vue_B as (SELECT 'AAA' nom, 'A' prénom, 1 n_nat from dual union SELECT 'DDD' , 'D' , 4 from dual union SELECT 'EEE' , 'E' , 5 from dual union SELECT 'GGG' , 'G' , 7 from dual ) SELECT A.nom, A.prénom, A.n_nat FROM vue_A A LEFT JOIN vue_B B ON A.n_nat=B.n_nat WHERE B.n_nat IS NULL
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 NOM PRÉNOM N_NAT 1 CCC C 3 2 BBB B 2 3 FFF F 6
Euh... il n'y aurait pas eu un ou des messages supprimés ?
Vu ma réponse, si je me souviens bien, il a demandé ensuite ceux de B qui ne sont pas dans A.
Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
Partager