- - PR -
【ORACLE】FULL JOINで取得される結果が正しくない。
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-01-15 13:00
こんにちは、
ORACLE9.2.0.1.0においてFULL OUTER JOINで困っています。 DUALテーブルで作った文字列のDUMMYテーブルをUNIONさせ、 これをFULL OUTER JOINさせています。(下記のSQLを参照) このSQLを実行すると不要行が取得されてしまいます。(下記の実行結果を参照) また、FULL OUTER JOINの前と後を入れ替えると実行結果が異なります。 同様のテストを実際のテーブルで行った所、以下の結果とは違い想定通りの結果が取得できました。(下記の想定結果を参照) 文字列で作った仮テーブルでは、なぜうまくいかないのでしょうか? --------------------------------------------------------- [SQL] select S.FLG,K.FLG from ( (select '1' AS FLG from dual) union (select '3' AS FLG from dual) union (select '4' AS FLG from dual) ) K FULL OUTER JOIN ( (select '1' AS FLG from dual) union (select '2' AS FLG from dual) ) S ON S.FLG = K.FLG --------------------------------------------------------- [実行結果] FLG FLG ――――― 1 1 4 3 1 ←ここがおかしい 2 --------------------------------------------------------- [想定結果] FLG FLG ――――― 1 1 4 3 2 ---------------------------------------------------------- |
|
投稿日時: 2008-01-17 01:04
自己レスですが、
FULL OUTER JOINで不具合があると少し聞いたのですが、 この不具合含めご存知の方いらっしゃいませんか? |
|
投稿日時: 2008-01-17 11:11
Oracle9.2.0.1はFull Outer Joinに限らずANSI準拠のSQLでたくさんの障害が発生してます。
サポート契約を締結しているなら最新パッチをダウンロードして当ててください。 またサポート契約済みならOiSCにログインして検索するとたくさんヒットします。 残念ながら公開区分が契約顧客のみなので、ここでは何もお知らせできませんが。 サポート契約を結んでいない場合やパッチを適用できない場合は、ANSI準拠のSQLは使わない方がいいと思います。昔ながらの外部結合(+)を使って書けませんか? |
|
投稿日時: 2008-01-18 00:47
ご返信ありがとうございます。
そうですか、やはり不具合が多いんですよね。 サポート契約は顧客が持っておりまして、そう簡単には検索はできそうにありません。 ANSI準拠のSQLを使わずに構築する様検討してみます。 ただでさえ長いSQLが更に長くなってしまいそうです・・・。 |
1