2017-09-21 3 views
0

私は2つのテーブル(顧客、取引)を持っています。購入した製品ごとに場所の数を見つける必要がありますか?

customer 
id name location 
1 samuel AZ 
2 mithun CA 
3 Robert NY 
etc.. 


transaction 
id customer_id product_id 
1  1   12000 
2  1    12222 
3  3    15000 
etc. 

異なる製品と異なる場所では私は1つの特定の製品を購入した場所の数を見つける必要があり、これらの列では

ありますか?

私は結合を使ってみました。

私のコードは

select c.id, c.location, t.product_id 
from customer c join transaction t 
on (c.id = t.cid); 

だった私は2つのテーブルを結合することができましたが、私はtidでトランザクションの数をカウントする必要があります。

答えて

0

グループ化を試してください - 特定の製品を購入した場所の数を示します。この意志は場所のために重複したエントリが含まれますが、あなたのトランザクションの数を見つけるのは

select t.product_id, count(c.location) 
from customer c join transaction t 
on (c.id = t.cid) 
group by 1; 
0

ビット「製品IDごとに異なる場所の数を」答えるだけでproduct_id

select t.product_id, count(distinct c.location) 
from transaction t 
join customer c on (c.id = t.id) 
group by product_id 

使用distinctに応じGROUP BY使用しますcountで同じ場所を2回カウントしないようにします。

関連する問題