Saya harus menemukan toko yang hanya menjual 1 produk tertentu

Saya harus bergabung dengan 3 tabel untuk mendapatkan semua informasi Seperti inilah tampilan tabel yang digabungkan

Store | Product | 
----------------
A     | Juice   | Mon
A     | Milk    | Mon
A     | Milk    | Tue
B     | Juice   | Mon
B     | Beer    | Tue
B     | Milk    | Wed
B     | Beer    | Thu
C     | Beer    | Mon
D     | Beer    | Thu
D     | Beer    | Fri

Saya ingin mendapatkan toko yang HANYA menjual Bir, yang jelas-jelas C dan D dalam kasus ini. Bagaimana cara menulis kueri yang dapat memfilter toko ini?

-2
maple 23 Desember 2020, 22:33

3 jawaban

Jawaban Terbaik

Anda dapat menggunakan agregasi:

select store
from t
group by store
having min(product) = max(product);
0
Gordon Linoff 23 Desember 2020, 19:35

Kelompokkan pertama menurut Toko, lalu periksa jumlah produk yang dijual oleh toko.

SELECT Store, Count(Product) AS pcount
FROM joined_table 
GROUP BY Store
HAVING pcount=1;
0
Nishant Chauhan 23 Desember 2020, 19:42

Anda dapat mengatur kondisi dalam klausa HAVING:

SELECT store
FROM (<your query here>) t
GROUP BY store
HAVING SUM(product <> 'beer') = 0;

Ketentuan SUM(product <> 'beer') = 0 menyaring toko mana pun yang menjual apa pun yang berbeda dari 'beer'.

0
forpas 23 Desember 2020, 19:48