2

次の構造と値を持つテーブル「optionsproducts」があります

ID      OptionID      ProductID
1       1             1
1       2             1
1       3             1
1       2             2
1       2             3
1       3             3

ここで、OptionID 2 と OptionID 3 の両方が割り当てられている ProductID を抽出したいと考えています。つまり、この場合、ProductID 1 と 3 を返す必要があります。何が欠けているのかわかりません。どんな助けでも大歓迎です。

4

4 に答える 4

4

productID2 と 3 の両方に関連するを取得するにOptionIdは、同様のクエリを記述できます。

select productid
  from ( select productid
              , optionid
              , dense_rank() over(partition by productid 
                                  order by optionid) as rn
           from t1
          where optionid in (2,3)
        ) s
where s.rn = 2

結果:

PRODUCTID
----------
1
3

SQLFiddle デモ

于 2013-08-28T09:19:49.073 に答える