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
);