2

私はこのような親テーブルを持っています

    ID    |   ParentTestID    |   TestID
----------------------------------------
    1     |        10         |    15
    2     |        10         |    25
    3     |        10         |    35

セカンドテーブル

ID    |   TestID    |   TestName    |   LanguageID
-----------------------------------------
1     |   15         |    Test1      |      8  
2     |   15         |    Test2      |      3  
3     |   15         |    Test3      |      1  
4     |   25         |    Test1      |      5  
5     |   25         |    Test2      |      3  
6     |   25         |    Test3      |      4  
7     |   35         |    Test1      |      3  
8     |   35         |    Test2      |      8  
9     |   35         |    Test3      |      9  

私のシナリオは、最初のテーブルでのみ ParentTestID を知っているときに、2 番目のテーブルから共通言語 ID を見つけることです。

つまり、親の TestID 10 がわかっている場合、 10 未満のすべての testID は共通の言語 ID 3 を持つため、結果は 3 になります。

また、親 ID の下の testID の数は予測できません。3だけにはなりません。

カーソルまたはそのような複雑さのないクエリを探しています。

4

2 に答える 2

0

testsそれぞれに3 つしかないと仮定するparenttestidと、次のクエリを試すことができます。

select distinct languageid
from child
where testid in (select testid from parent where parenttestid = 10)
group by languageid having count(*) > 2

編集:

カウントが固定されていない場合、次のクエリが機能します。

select distinct languageid
from child
where testid in (select testid from parent where parenttestid = 10)
group by languageid
having count(testid) = (select count(testid) from parent where parenttestid = 10)
于 2013-07-17T13:31:24.743 に答える