• ChrisM@Work (10/1/2013)


    This I reckon is the correct way to write your query:

    select T2.COL1, T2.COL2, T1.COL1, T1.COL2, T1.COL3

    from T1

    join T2

    on T1.COL4 = T2.COL3

    where T2.COL4 != 'data1'

    and T1.COL1 is not NULL

    and T1.COL5 is not NULL

    and T1.COL6 = 'data2'

    AND NOT EXISTS (SELECT 1 FROM T3

    WHERE T3.COL1 = T2.COL1

    AND T3.COL2 = T2.COL2

    AND T3.COL3 = T1.COL1

    AND T3.COL4 = T1.COL2)

    Check the results against the SELECT part of your original.

    So in this case, it will select from T1 and T2, only if not in T3 ?

    What if you want to include non-matches against T3 ? Would you add to the WHERE clause ?

    and T3.COL1 is NULL

    and T3.COL2 is NULL

    and T3.COL3 is NULL

    and T3.COL4 is NULL