OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

外部結合がうまくいきません。

  • すぐに回答を!
  • 質問No.184649
  • 閲覧数99
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 27% (43/159)

PL/SQLでビューを作成しているのですが、外部結合がうまくいきません。
CREATE OR REPLACE VIEW USERCOST.VW_KENSAKU_CUST
(CUSTID,TANTOU)
AS
SELECT Y.CUSTID, CD2.CODENM1 AS TANTOU,

FROM T_YOYAKU Y, M_CODE CD2,
(SELECT CUSTID,EDATE,JITUWORKERID

           FROM T_YOYAKU

           WHERE CUSTID || EDATE IN

           (SELECT CUSTID || MAX(EDATE)

           FROM T_YOYAKU

           WHERE TO_DATE(EDATE,'YYYY/MM/DD') <= TO_DATE(SYSDATE,'YYYY/MM/DD')
GROUP BY CUSTID ) 

WHERE
 Y.CUSTID = AL.CUSTID AND
Y.EDATE = AL.EDATE AND
Y.JITUWORKERID = AL.JITUWORKERID AND
CD2.CODEID(+) = '50' AND
CD2.CODENO(+) = Y.JITUWORKERID
/
抽出できないのは CD2.CODENM1です。どなたか知恵を貸して頂けませんでしょうか。お願い致します。                    
  
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル7

ベストアンサー率 57% (8/14)

どうもこんにちは。
まず、このSQL文ですがどこか抜け落ちているようで
このままだと動作しないのでは?
さて、CD2.CODENM1がうまく抽出できないとのことですが
具体的にどうなるのかがわからないのではっきりとは言え
ませんが、以下の条件から
CD2.CODEID(+) = '50' AND
CD2.CODENO(+) = Y.JITUWORKERID
Yテーブルから CD2テーブルへの外部結合でCODEIDが'50'の
ものを抽出し、その場合にYテーブル側は全件抽出するという
ように読み取れます。
この場合、CODEIDが'50'以外のレコードについてはCD2.CODENM1
がNULLとなってしまうと思います。CODEIDが'50'だけ抽出したい
のであれば CD2.CODEID = '50' でいいかと思います。
あと結合の書き方も Y.JITUWORKERID = CD2.CODENO(+) と外部
結合される側を右辺に持っていった方がいいような気がします。

的外れな回答だったらすみません。(汗)
お礼コメント
saruno

お礼率 27% (43/159)

わざわざ長いソースを読んでくださりどうもありがとうございます。
外部結合はうまくいきました。
原因はテーブルの項目だったようです。

iwazさんの真心に感謝してポイント発行させていただきます。
投稿日時 - 2001-12-21 16:58:30
-PR-
-PR-
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ