I have two tables, which look roughly like this:
Table1: CUSTOMER OFFER SALES -------- ----- ----- A 111 1 A 222 1 B 111 1 B 222 1 C 111 1 Table2: CUSTOMER OFFER -------- ----- A 111 A 222 B 111
I want to query these tables to return only the customers who are in both tables, but also to only return the rows where that combination of customer & offer does not exist in table2.
In other words, the results should look like this:
CUSTOMER OFFER SALES -------- ----- ----- B 222 1
Does anyone know how best to do this please?
Advertisement
Answer
This sounds like exists
and not exists
:
select t1.* from table1 t1 where exists (select 1 from table2 t2 where t2.customer = t1.customer ) and not exists (select 1 from table2 t2 where t2.customer = t1.customer and t2.offer = t1.offer );