スケーラブルデータベースサーバ HiRDB Version 8 SQLリファレンス
繰返し列を要素ごとに分割し,それぞれを別の行として検索できます。
また,複数の繰返し列の添字が等しい要素同士を,同じ行として検索できます。これを,繰返し列の平坦化機能といいます。
SELECT 〔ALL|DISTINCT〕{選択式〔,選択式〕 …|*} FROM〔〔RDノード名称.〕認可識別子.〕表識別子 〔IN (RDエリア名指定)〕 (FLAT(列名〔,列名〕 …))〔〔AS〕相関名〕 〔使用インデクスのSQL最適化指定〕 〔WHERE 探索条件〕 〔GROUP BY 列指定〔,列指定〕…〕 〔HAVING 探索条件 |
選択式,FLAT,及び探索条件以外のオペランドについては,「2.2.1 問合せ式 形式1(一般問合せ式)」を参照してください。
検索結果として出力する項目を指定します。
選択式については,「2.3 問合せ指定」を参照してください。
平坦化の対象となる繰返し列又は,繰返し列を含む列の並びを指定します。
複数の繰返し列を指定した場合は,添字が等しい要素が同じ行に含まれるように平坦化されます。
通常の列(繰返し構造でない列)も含む場合は,繰返し列のどの要素に対しても同じ値を持つ行が生成されます。
繰返し列,又は繰返し列を含む列の組を平坦化した後は,通常の列になります。したがって,その問合せ式中では通常の列として指定します。
探索条件中には,平坦化した後の項目を指定できます。
探索条件については,「2.7 探索条件」を参照してください。
列名に指定した列とインデクスの関係 | SQL文 実行可否 |
|||
---|---|---|---|---|
インデクス定義あり | 繰返し列を含むインデクスがある | FLATの列名に指定した列のうち,SQL中に指定した列をすべて包括したインデクスがある | FLATの列名中に一つでも繰返し列が存在する | ○ |
FLATの列名中に一つも繰返し列が存在しない | × | |||
FLATの列名に指定した列のうち,SQL中に指定した列をすべて包括したインデクスがない | × | |||
繰返し列を含むインデクスがない | × | |||
インデクス定義なし | × |
SELECT 氏名,科目名,成績 FROM 成績表 (FLAT(氏名,科目名,成績)) WHERE 成績>=70
表定義: CREATE TABLE 成績表(氏名 MCHAR(10), 科目名 MCHAR(10) ARRAY[4], 成績 SMALLINT ARRAY[4]); インデクス定義: CREATE INDEX 科目成績 ON 成績表(氏名,科目名,成績);
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.