関心のある2つの列を持つテーブルがあります
Business_ID   /   Product type
あるタイプを販売し、他のタイプを販売しないビジネスのみを取得する SQL クエリを作成しようとしています。したがって、テーブルには
B_ID    prod_type
123  |   A
123  |   A
123  |   B
234  |   A
234  |   C
234  |   C
456  |   A
456  |   D
789  |   A
そしてリストは延々と続きます。prod_type B、C、D ではなく、prod_type A を販売する B_ID を見つける SQL ステートメントを作成しようとしています。
SELECT phop_1.Business_id, phop_1.PRODUCT_TYPE, count(*) 
FROM phop phop_1, phop phop_2
WHERE phop_1.Business_id = phop_2.Business_id
  AND phop_1.PRODUCT_TYPE = 'A'
  AND NOT phop_2.PRODUCT_TYPE = 'B'
GROUP BY phop_1.Business_id, phop_1.PRODUCT_TYPE
外部結合を使用して除外する方法も見つけましたが、同じテーブルであるため、結合を行う前に prod_type A を選択する方法がない限り、それを行うことはできません。
select phop_1.Business_id, phop_1.PRODUCT_TYPE, count(*) 
from phop phop_1
LEFT OUTER JOIN phop phop_2
ON phop_1.Business_id = phop_2.Business_id
WHERE phop_2.Business_id IS NULL
GROUP BY phop_1.Business_id, phop_1.PRODUCT_TYPE