INTERSECTION関数

INTERSECTION行関数は、同じデータ型の2つのセットを取得して、両方の入力セットの共通部分となる1つのセットを返します。

INTERSECTION関数の構文は次のとおりです。
INTERSECTION(<set1>, <set2>)
ここで、
  • set1はセット・データ型の1つのセットです(mdex:string-setなど)。たとえば、set1は、複数割当ての文字列属性にすることができます。
  • set2set1と同じセット・データ型の1つのセットです。たとえば、set1が複数割当ての文字列属性である場合は、set2も文字列のセットにする必要があります(別の複数割当ての文字列属性など)。
異なるセット・データ型の2つのセットの共通部分を取得しようとすると、次の例のようなエラー・メッセージが返されます。
"INTERSECTION" is not a valid function on the types (mdex:string-set, mdex:double)

このエラーの例では、INTERSECTIONが、入力として複数割当ての文字列属性(mdex:string-set)および複数割当てのdouble属性(mdex:double-set)を取得して使用されています。

INTERSECTIONの例

この例では、BodyとFlavorsの両方が複数割当ての文字列属性であり、WineIDはレコードの主キーです。
RETURN results AS
SELECT 
   WineID AS idRec,
   INTERSECTION(Body, Flavors) AS intersectAttrs
WHERE WineID BETWEEN 5 AND 9
ORDER BY idRec
この文の結果は次のようになります。
idRec    intersectAttrs
-----------------------------
| 5 | { Earthy }            |
| 6 | { }                   |
| 7 | { }                   |
| 8 | { Oak }               |
| 9 | { Fruit, Strawberry } |
-----------------------------

レコード5および8は、Body割当てとFlavors割当ての間に共通部分が1つ存在するため、1要素の結果セットがありますが、レコード9には2要素の共通部分があります。レコード6および7は、Body割当てとFlavors割当ての間に共通部分が存在しないため、空のセットを返しています。