2016-12-10 10 views
0

2つの属性clientidとproductidを持つテーブルTがあります。各行は売り上げを表します。SQL - すべての最初の要素で共有される2番目の要素を持つすべてのタプルを取得します。

データベース内のすべてのクライアントが購入した製品の数を調べる必要があります。

私はSQLを初めて使用しているため、簡単な方法はありません。

例:

clientid | productid 
-------------------- 
1  | A 
1  | B 
1  | C 
1  | D 
2  | A 
2  | C 
2  | E 
3  | A 
3  | B 

期待される結果:

Count: 1 

唯一の製品Aは、クライアント1、2及び3

で行うには感謝

+0

に置き換えてください。サンプルデータと期待される結果を投稿してください – Mansoor

+0

どのDBMSをお使いですか? –

答えて

2

一つの方法を買ってきたので、それ:

select productid 
from sales 
group by productid 
having count(*) = (select count(distinct clientid) 
        from sales); 

上記は、すべてのクライアントが購入したすべての製品IDを返します。ただ、カウントが必要な場合は、派生テーブルにそのをラップ:

select count(*) 
from (
    select productid 
    from sales 
    group by productid 
    having count(*) = (select count(distinct clientid) 
        from sales) 
) t; 

上記は少なくともつの製品を注文したすべてのクライアントで購入された製品を返します。 **すべての*クライアントが格納されているclientテーブルをお持ちの場合は、サブクエリをselect count(*) from clients

+0

ありがとう、それは完璧です – soling

関連する問題