P131 SQLパズルすべての製品を購入した人


クエリの番号が画像のSELECT出力と同じはず。

–(検討1)
–(KB1)のところが理解できない。なぜ、COUNTした数が一致するとCustomerがわかるのか?
–数値でCustomerが取得できる理屈がわからない。

等号の場合は全製品2つを購入したcustomer_id1が出力される。以下は不等号なので全製品を購入していない2が出力された

(KB1)のところを調べる。そもそも等号不等号で行のレコードが表示される仕組みが理解できていない。

INNER JOINの結合表

次にitem_idでCOUNT(DISTINCT item_id)を求める

結論
COUNTという数字だけで見ていると製品数しか情報を持っていないと思っていたようだ。
実際は、製品数に付随するCustomer_id情報もあるので、出力されたと思う
あくまでもWhereでの<>条件を求めているに過ぎず、SELECTでは必要な情報が出力されている。
このような考え方に慣れるしかない。

こちらの記事もどうぞ