「Oracle」タグアーカイブ

ORA-01799: 列は副問合せに対して外部結合されません。


今日もエラーが出ました。

ORA-01799: 列は副問合せに対して外部結合されません。

下のように解決しました。 (使っているデータベースは Oracle 10g11g のどっちかでした。)

事例 1

エラーが出たのは次の結合条件。

LEFT JOIN で結合するテーブルの結合条件に副問合せをつかうと駄目みたいです。

期待する結果

上のコードでやりたいのは、 JNYUKA.BUNNO がメインテーブルの値(MAIN.BUNNO)以下になっているもので、最大のものをとることです。下のように。

MAIN BUNNO JNYUKA BUNNO FNY BUNNO
1 1 1
2 2 2
3 2

上のコードではエラーがでます。 カーソルを使っていったんテーブルに入れるのも面倒です。そこで・・・

このようにすればエラーはでません。 BUNNOがメインテーブル以下のものをすべて結合した後で、最大のもののみに絞り込むイメージ。

事例 2

別の例があったので・・・

Oracleで子テーブルの最新を外部結合できない!? で次のコードを見つけました。

この場合だと

とすればいいことになります。

ON ではなくて JOIN の中に条件を入れてしまう方法でも解決できます。


複数のSQLを一度に実行するためのスクリプト


Oracle では、PL/SQL や CREATE 文 をファイルにしておいて、ファイルにしたスクリプトを実行することができる。

(Windows では) plsql を開き、下のように@マークの後にファイル名を続けて書いて Enter を押せば OK だ。

@"C:Folderxxx.sql" 続きを読む 複数のSQLを一度に実行するためのスクリプト

VBA: Access のテーブル定義を一覧で出す方法


Microsoft Office Access(アクセス)のファイル(.mdb)の中のテーブル定義一覧を、 Oracle用のテーブル定義に変換して、一覧で出力するコードを紹介します。

概要

  • Excel と VBA を使用します。
  • VBA の 関数 GetTableDefinitions を実行すると、 開いているエクセルのシートにアクセスファイル内のテーブル定義を一覧出力します。
  • テーブル定義書(.xls)に貼り付けることを想定してテキストデータを作ります。
  • Access のテーブルを Oracle 用 にするので、 例えばテキストのカラムは VARCHAR2 として表示されます。
  • システムテーブルは出力しません(コードを一部変更すれば出力できます)。
  • リンクテーブルは、リンクの内容を表示します。 リンク先のテーブルの定義は出力しません。

使い方

  1. Excel を開きます。
  2. 開発ツール Visual Basic Editor を開きます。
  3. モジュールを追加します。
  4. ツールの参照設定から Microsoft DAO にチェックを入れます。
  5. 下のコードを貼り付けます。
  6. 関数 GetTableDefinitions を実行します。
続きを読む VBA: Access のテーブル定義を一覧で出す方法

SQL: 最初のNレコードを抽出する SELECT の書き方


SQL で最初の 限られたレコードを抽出する場合の SELECT文 の書き方です。

続きを読む SQL: 最初のNレコードを抽出する SELECT の書き方

Oracle: Group 化 の際に文字列を結合する


Group 化 する際に 文字列を カンマ区切りで結合する方法を 2つ 紹介します。

続きを読む Oracle: Group 化 の際に文字列を結合する