エンジニアにとってみれば、SQL は使えてあたりまえかもしれませんが、営業や管理部の人からすれば魅惑の魔法といわれることもあります。 しかし非エンジニアの方でも SQL が使えた方がいいですし、 そのほうがエンジニアの作業も楽になります。
ここでは、 SQL による検索結果をひとつのテーブルとして扱う方法を説明します。 サブクエリと呼ばれるものです。
続きを読む 見るためのデータベース・SQL 検索結果をテーブルとして扱うエンジニアにとってみれば、SQL は使えてあたりまえかもしれませんが、営業や管理部の人からすれば魅惑の魔法といわれることもあります。 しかし非エンジニアの方でも SQL が使えた方がいいですし、 そのほうがエンジニアの作業も楽になります。
ここでは、 SQL による検索結果をひとつのテーブルとして扱う方法を説明します。 サブクエリと呼ばれるものです。
続きを読む 見るためのデータベース・SQL 検索結果をテーブルとして扱う今日もエラーが出ました。
ORA-01799: 列は副問合せに対して外部結合されません。
下のように解決しました。 (使っているデータベースは Oracle 10g か 11g のどっちかでした。)
エラーが出たのは次の結合条件。
LEFT JOIN
で結合するテーブルの結合条件に副問合せをつかうと駄目みたいです。
上のコードでやりたいのは、 JNYUKA.BUNNO
がメインテーブルの値(MAIN.BUNNO
)以下になっているもので、最大のものをとることです。下のように。
MAIN BUNNO | JNYUKA BUNNO | FNY BUNNO |
---|---|---|
1 | 1 | 1 |
2 | 2 | 2 |
3 | 2 |
上のコードではエラーがでます。 カーソルを使っていったんテーブルに入れるのも面倒です。そこで・・・
このようにすればエラーはでません。 BUNNO
がメインテーブル以下のものをすべて結合した後で、最大のもののみに絞り込むイメージ。
別の例があったので・・・
Oracleで子テーブルの最新を外部結合できない!? で次のコードを見つけました。
この場合だと
とすればいいことになります。
ON
ではなくて JOIN
の中に条件を入れてしまう方法でも解決できます。
通知