You will also see the AND clause used to further filter records. This is extremely important when working with outer joins, since adding these filtering actions to the where clause will turn the join from the left join to the inner join (unless that's where t.idfield is zero).
Below I will show how this works, and why it is important to correctly position the filtering conditions.
create table # test (test1id int, test varchar (10)) create table # test2 (test2id int, test1id int, test2 varchar (10))
insert into #test (test1id, test) select 1, 'Judy' union all select 2, 'Sam' union all select 3, 'Nathan' insert into #test2 (test2id, test1id, test2) select 1,1,'hello' union all select 2,1,'goodbye' union all select 3,2,'hello' select * from #test t left join #test2 t2 on t.test1id = t2.test1id where test2 = 'goodbye' --result set --test1id test test2id test1id test2 --1 Judy 2 1 goodbye select * from #test t left join #test2 t2 on t.test1id = t2.test1id and test2 = 'goodbye' --result set --test1id test test2id test1id test2 --1 Judy 2 1 goodbye --2 Sam NULL NULL NULL --3 Nathan NULL NULL NULL
You can use where some field is NULL (provided that you select a field that will never be NULL) to get records in the first table, but not in the second, for example, like this:
select * from #test t left join #test2 t2 on t.test1id = t2.test1id where test2id is null --result set --test1id test test2id test1id test2 --3 Nathan NULL NULL NULL
Hlgem source share