Как объединить два поля и пометить их соответствующим образом - PullRequest
0 голосов
/ 29 мая 2020

Я хотел бы знать, как отмечать клиентов, которые не приобрели некоторые товары, описанные в двух полях (название продукта и номер продукта). Мне удалось выполнить этот запрос для клиентов, которые их купили, но не наоборот. Заранее благодарим за помощь!

Вот часть моего SQL запроса.

Select customer_id, product_name, product_number
from table 
where 
((PRODUCT_NAME = 'LIAM' AND PRODUCT_NUMBER = '212') OR
 (PRODUCT_NAME = 'ARRAY' AND PRODUCT_NUMBER = '325') 
)

Вот пример:

1 LIAM 212

1 STACY 452

1 NEIL 789

1 LIAM 345

2 ROSE 234

2 LIAM 345

2 ARRAY 325

3 STACY 452 

3 ARRAY 625

Результат запроса:

1 ARRAY 325

2 LIAM 212

3 ARRAY 325

3 LIAM 212

1 Ответ

0 голосов
/ 29 мая 2020

Кажется, вы хотите not exists:

select t.*
from table t
where not exists (select 1 
                  from table t1 
                  where t1.customer_id = t.customer_id and 
                        t1.PRODUCT_NAME in ('LIAM', 'ARRAY')
                 );

Я не вижу каких-либо преимуществ использования обоих Product_name и Product_number в предложении where, если они определены уникальными в таблице.

Таким образом, вы получите покупателя, который никогда не покупал товар liam или array.

...