2016-11-27 2 views
-4

私はテーブルcustomerproductcustomerproduct(顧客と彼らが購入した製品を含むリンクテーブル)を持っています。
ではなく、で購入した各顧客をリストしたいと思います。お客様が購入していない製品をリストする方法は?

お客様

Tom 
Jim 
Harry 

製品

Shampoo 
Brush 
Shoe 
Box 

Customerproduct

Jim | box 
Jim | brush 
Tom | brush 
Harry | shampoo 

だから、私のクエリが表示されるはずです:

Jim | shampoo 
Jim | shoe 
Tom | shampoo 
Tom | shoe 
Tom | box 
... 

私は私の顧客や製品を取得するためにルックアップを使用する必要があります。個別のテーブルを作成するCustomersandProductsテーブルを手動で入力することは選択肢ではありません。 NOT EXISTS、NOT INなどを使用して結果を取得する方法が必要ですか?

+1

あなたはまだ何かを試してみましたか?これは宿題の問題ですか? –

+0

私は持っています。私は希望の結果を得ていません。私はルックアップを使用せず、クエリwizを使用して比類のないレコードを見つけると解決できます。しかし、それは私の問題を助けるものではありません。 –

+0

お問い合わせください。 –

答えて

0

まず、顧客と製品のすべての順列と組み合わせを得るために、顧客と製品に参加する必要があります。実際の顧客製品テーブルを参照するだけです。

は、クエリを、次の試してみてください。

select c.cname,p.pname 
customers c, 
product p 
where c.name,p.name not in (
select cp_i.cname,cp_i.pname 
from customerproduct cp_i) 

行の数は、テーブルのいずれかに高い場合、このクエリは非常に(CPU/IOなど)に敏感な資源になります。

別のアプローチ:

select c.cname,p.pname 
customers c, 
product p 
where not exists (
select 1 
from customerproduct cp_i 
where cp_i.cname=c.cname 
and cp_i.pname=p.pname) 
+0

ありがとうございました!自分のDBを試してみるためにこれを修正する必要がありますが、少なくともそれは私にスタートを与える! –

+0

は、私は私のアクセスクエリで、次が、取得構文エラー入力された:表1、表2 FROM Table1.Customer、Table2.Product を選択するWHERE Table1.Customer、Table2.Product NOT IN (FROM Table3.Customer、Table3.Product を選択表3)。 –

+0

Table1.Customer、Table2.Product NOT IN..itの前にかっこを追加すると、(Table1.Customer、Table2.Product)NOT IN ...でも正確なエラーの説明を教えてください。 –

関連する問題