MS SQL Server 2008 では、次のようなテーブルがあります。
CREATE TABLE SomeTable
(
MajorID int NOT NULL REFERENCES ...,
MinorID int NOT NULL,
Value int NOT NULL REFERENCES ...,
PRIMARY KEY(MajorID, MinorID)
)
(Value0、Value1、...) のセットもあります。目標は、少なくとも 1 回リストされているセットのすべての値を持つすべての MajorID を見つけることです。このタスクでは MinorID は重要ではありません。セットのサイズは事前定義されておらず、セットはクライアント アプリケーションで生成されます。その最大サイズには妥当な制限があります (たとえば 64)。
どの SQL を使用すればよいですか?
例:
MajorID MinorID 値
1 0 4
1 1 1
1 2 3
1 3 4
1 4 4
1 5 5
1 6 5
2 0 1
3 0 1
3 1 4
値リスト (1, 4) の場合、答えは (1, 3) です。MajorID 1 と 3 にはそれぞれの値が少なくとも 1 回リストされているためです。