2017-05-05 5 views
-2

私はプレーヤーとそのゲームのデータベースを持っています。私はゲームのリストを取得しようとしている、与えられた選手のセットが共通している。すべての行を共通に取得する

例データ:

だから、
PLAYER GAME 
1  A 
1  B 
1  C 
2  B 
2  C 
3  B 
4  A 
4  B 
5  C 
5  B 

、与えられた:1, 2, 3, 4それは私に

GAME 
B 

そして、与えられたを与えるだろう:1, 2, 5それは私に

GAME 
B 
C 
+0

あなたが与えられた値を提供している、あなたは何を与えられた意味ですか?ユーザーが入力したプレーヤーの値のリストですか?また、あなたがこれまでに試したことを分かち合ってください。 – unleashed

答えて

1

一つの方法は次のとおりです。

with cte as (
    select PLAYER, GAME from your_table where player in (1, 2, 3, 4) 
) 
select GAME from cte 
group by GAME 
having count(distinct PLAYER) = (select count(distinct PLAYER) from cte) 
+1

素晴らしい、ありがとう。私はGurwinder Singhの提案に基づいて同様のことをしようとしていました。 – blydr

0

を与えるだろうあなたは条件付きの集約を使用することができますこのため:

1について

、2、3、4:

select game 
from your_table 
group by game 
having count(distinct case when player in (1, 2, 3, 4) then player end) = 4; 
1について

、2、5:

select game 
from your_table 
group by game 
having count(distinct case when player in (1, 2, 5) then player end) = 3; 

Demo on rextester

0

単純な句:

SELECT DISTINCT game 
FROM table_name 
WHERE player in (1, 2, 3, 4); 

SELECT DISTINCT game 
FROM table_name 
WHERE player in (1, 2, 5); 

編集:Gurwinder Singhのコメントごとに、DISTINCTキーワードをクエリに追加しました。

+0

それは簡単ではありません。あなたの質問のこのデモを見てください - http://rextester.com/PTMJ60117 – GurV

+0

@ GurwinderSingh私が何を考えているか分かりません - それを指摘してくれてありがとう。 =) – Jake

関連する問題