2017-01-26 7 views
0

私は特定のサービスを提供するベンダーをフィルタリングしようとしています。ベンダーとサービスのMySQLランキングSQL

ベンダーとサービスの間には多くの関係があります。

ベンダーは、任意の数のサービスを提供できます。以下の表を参照してください。

私は、たとえば指定されたサービスを提供しているベンダーフィルタリングする必要がある

:この場合には単一のベンダーは、これらのサービスのすべてを提供していないので、私はサービスを満たすための2つのベンダーの最大値を選択することができます301302303304

: サービスお客様へ

Vendor Services 
1001 301 
1001 303 
1002 302 
1002 303 
1002 304 
1003 302 
1003 303 
1004 304 

実際のシナリオでは、これは非常に基本的な例ですが、同じサービスを提供する複数のベンダーが存在する可能性があります。私は一緒にすべてのサービスを提供している2台のenter code hereを選ぶことができます。

MySQLでSQLクエリを提供すると感謝します。

おかげ

答えて

0

私が正しく理解していれば、あなたはgroup byhavingを使用することができます。

select vendor 
from belowtable 
where service in (301, 302, 303, 304) 
group by vendor 
having count(*) = 4; 

重複がbelowtableに許可されている場合は、having句でcount(distinct service)を使用しています。

+0

(非常に合理的に - PRIMARY KEYが[ベンダー、サービス]で形成されていると仮定して) – Strawberry

+0

@Gordon Linoffこれはベンダーによってグループ化され、ベンダーはすべてのサービスを提供するわけではないので、そこ。それは3,2,2 1のように4未満です。 – user1221049

+0

この場合、私はこれら4つのサービスを一緒に提供できる2つのベンダーが必要です。 – user1221049

関連する問題