| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 前のページ 1 2 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 副問い合わせ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
副問い合わせには、結果がスカラ値になるものと単一行になるもの、および複数行になるものがありますが、Oracle、PostgreSQLともにすべてに対応していますので、基本的に変更の必要はありません。 ただし副問い合わせは、選択リストで使用する場合とFROM句内で使用する場合、およびWHERE句内で使用する場合がありますが、PostgreSQLではFROM句内の副問い合わせには、必ずエイリアスが必要なので注意しましょう。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| スカラ副問い合わせの例 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
スカラ副問い合わせの場合は、OracleとPostgreSQLで構文は変わりません。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SELECT 商品名 FROM 商品マスタ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| FROM句内で副問い合わせを使用した例 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Oracleの例は、必ずしもFROM句内の副問い合わせに別名を付ける必要はありません。しかし、PostgreSQLでは別名を付けないとエラーになります。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| OracleのFROM句内の副問い合わせ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SELECT 担当者名 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Postgresの副問い合わせ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SELECT 担当者名 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| なお、この例は単純であるため、副問い合わせを使わずとも書けますが、違いを示すために使用しました。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 相関副問い合わせ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
PostgreSQLは、Oracle同様に相関副問い合わせもサポートしていますので、特に変更する必要はありません。相関副問い合わせとは、親文が行を処理するたびに算出される副問い合わせのことです。リスト4にその例を示します。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SELECT S.商品ID, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
リスト4:相関副問い合わせ例 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 結果は図6のようになります。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
図6:相関副問い合わせの実行結果 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 真偽値を返す副問い合わせ式 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
真偽値を返す副問い合わせ式には、次のものがあります。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| PostgreSQL、Oracleともに、この副問い合わせ式のすべてをサポートしているので、変更の必要はありません。 真偽値を返す副問い合わせでINを使用した例です【注1】。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ※注1:ただしINを使わなくても書くことはできます。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SELECT 商品名 FROM 商品マスタ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 結果は図7のようになります。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
商品名 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
図7:真偽値を返す副問い合わせ式の実行結果 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 前のページ 1 2 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||

