2011-10-24 5 views
0

私は2つのテーブルCustomersProductsを持っています。顧客は複数の製品を持つことができます。行を比較するSQLクエリ(クラスがどこにあるか)

特定の製品を持っていない顧客を検索しようとしています。例えば

、10人の顧客は、製品ABを買って、別の10人の顧客はABを買って、そしてCC製品をお持ちでないお客様を検索するにはどうすればよいですか?あなたの現在のDB構造については

+4

テーブル構造を指定する必要があります。私たちは霊的ではありません! – StevieG

+0

おそらく少なくとも* 3つのテーブルがあります:購入することができる「顧客」(別名顧客)、買うことができる「商品」、どの顧客がどの製品を購入したかを示す「購入」。私は正しい? –

+0

お客様 ID 名 電話 アドレス 製品 ID 名 は、私が言及するのを忘れてしまった – allyraza

答えて

1

、これはあなたが探しているものされています

select c.id, c.name, c.phone, c.address 
from Customers c 
where not exists (select * from products p 
        where p.customer_id = c.id and p.id = 'c') 

ただし、個々の購入を格納するための第三のテーブルを作成することを検討すべきです。

あなたは本当に(@Tonyアンドリュースと@Adrianによってすでに示唆したように)顧客が製品を買っているの詳細を格納する第三のテーブルを持っている必要があり
1
select * 
FROM customer c 
WHERE NOT EXISTS (SELECT 1 from products p 
        WHERE p.customer_id = c.id) 

。これはあなたの製品テーブルから重複を除去している意味

**Customer** 
Id 
Name 
Address 
Phone 

**Product** 
Id 
Name 
Price 

**Customer_Product** 
customer_id 
product_id 

:よう

気にいりません。商品名がわずかに変更された場合は、何行する必要があるかを考えてください。複数の行を更新するのではなく、1行だけを更新するだけで済みます。取引履歴はすべて..

+0

こんにちは、これは、私は顧客、製品、購入に従うように3つのテーブルを持っているように見える方法私は3つの10の製品を持っている私はクライアントがインスタンス '選択cの特定の製品を持っていないデータベースからすべてのレコードをプルしたい。名前、c.status、c.contact_number購入からpに参加するc.cid = c.idどこにも存在しない(product_a) ' ありがとう – allyraza

+0

新しい質問を投稿することをお勧めします.. – StevieG

関連する問題