1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| Create table table1
(id int
,person varchar(10)
);
Create table table2
(id int
,personid int
,register varchar(10)
);
insert into table1 Values
(1,'person1')
,(2,'person2')
,(3,'person3')
insert into table2 values
(1,1,'date1')
,(2,1,'date2')
,(3,2,'date1')
,(4,3,'date3')
/* afficher les informations
- de table1
- qui sont sans correspondance avec les lignes de table2 limitée à la 'date1' dans register
*/
;with table2_avec_date1 as
( select * from Table2 where register ='date1')
select t1.*
from Table1 t1
left outer join table2_avec_date1 t2
on T1.id = T2.personid
where T2.id is null
;
/* afficher les informations
- de table1 pour lesquelles il n'existe pas de ligne correspondante dans
- table2 avec la valeur date1 dans register
*/
select *
from Table1 t1
where not exists(select null
from Table2 t2
where t2.register ='date1'
and t2.personid=t1.id)
;
/* afficher les informations
- de table1 pour lesquelles il n'existe pas de valeur correspondantes à
- la liste des personid de table2 ayant la valeur date1 dans register
*/
Select *
from table1 t1
where t1.id not in (select t2.personid
from Table2 t2
where t2.register ='date1') |
Partager