1

Oracle SQL開発者を使用して、

異なる列を持つ 2 つのビューがあります。ビュー A の列 1 をビュー B に結合するにはどうすればよいですか? AR_INVOICE_INQ_V.CLI_NAME CLI_NAMEビューBからビューAに参加したい.

ビューA

CREATE OR REPLACE FORCE VIEW "KPRD"."AC_INPUT_AUDIT" ("CLIENT", "SEQUENCE_CODE", "EMPLOYEE", "ORIGINAL_DATE", "HOURS_SPENT", "LONG_DESCRIPTION", "TIME_AT_ACTUAL", "MANAGER")
AS
  SELECT CLIENT,
    SEQUENCE_CODE,
    EMPLOYEE,
    ORIGINAL_DATE,
    HOURS_SPENT,
    LONG_DESCRIPTION,
    TIME_AT_ACTUAL,
    MANAGER
  FROM TIME_DETAILS
  WHERE MANAGER BETWEEN 'AAGG' AND 'AZJE'
  AND ORIGINAL_DATE    > '28/SEP/2012'
  AND TIME_AT_ACTUAL ! = 0;

ビューB

CREATE OR REPLACE FORCE VIEW "KPRD"."AC_AR_INV_BAL" ("CLIENT", "CLI_NAME", "PARTNER", "PAR_NAME", "MANAGER", "REFERENCE", "STATUS_CODE", "INVOICE_DATE", "TIME_BILLED", "GROUP_CLIENT_CODE", "GRPCLI_NAME", "INVOICE_BALANCE")
AS
  SELECT AR_INVOICE_INQ_V.CLIENT CLIENT,
    AR_INVOICE_INQ_V.CLI_NAME CLI_NAME,
    AR_INVOICE_INQ_V.PARTNER PARTNER,
    AR_INVOICE_INQ_V.PAR_NAME PAR_NAME,
    AR_INVOICE_INQ_V.MANAGER MANAGER,
    AR_INVOICE_INQ_V.REFERENCE REFERENCE,
    AR_INVOICE_INQ_V.STATUS_CODE STATUS_CODE,
    AR_INVOICE_INQ_V.INVOICE_DATE INVOICE_DATE,
    AR_INVOICE_INQ_V.TIME_BILLED TIME_BILLED,
    AR_INVOICE_INQ_V.GROUP_CLIENT_CODE GROUP_CLIENT_CODE,
    AR_INVOICE_INQ_V.GRPCLI_NAME GRPCLI_NAME,
    AR_INVOICE_INQ_V.INVOICE_BALANCE
  FROM AR_INVOICE_INQ_V
  WHERE MANAGER BETWEEN 'AAGG' AND 'AZGG';
4

2 に答える 2

0

ビューを結合するための構文は、テーブルの場合と同じです。何を達成しようとしているのか完全にはわかりませんが、ビューからすべての列を表示し、ビューから1つの追加の列を追加する必要があると思います。両方の構文に共通の値があると仮定すると、次のようになります。ABCLIENT

SELECT AIA.CLIENT,
    AIA.SEQUENCE_CODE,
    AIA.EMPLOYEE,
    AIA.ORIGINAL_DATE,
    AIA.HOURS_SPENT,
    AIA.LONG_DESCRIPTION,
    AIA.TIME_AT_ACTUAL,
    AIA.MANAGER,
    AAIB.CLI_NAME
FROM AC_INPUT_AUDIT AIA
JOIN AC_AR_INV_BAL AAIB ON AAIB.CLIENT = AIA.CLIENT;

MANAGERこれは、両方のビューのレコード間に1対1の関係があることを前提としているようですが、特にフィルターが異なるため、これはありそうにないようです。そのため、レコードが重複したり欠落したりして、期待した結果に戻る可能性があります。外部結合はそれに対処するかもしれませんが、それを悪化させる可能性もあるので、ビューがどのように関連していて、何を達成しようとしているのかを明確にする必要があります。

基になるテーブルにアクセスできる場合は、それらを結合する方がパフォーマンスが高いと感じるかもしれませんが、おそらく両方の方法でテストする必要があります。

于 2012-10-24T17:01:22.370 に答える
0

column 1からに結合するview Aview Bは、両方のテーブルまたはビューにcolumn 1. AR_INVOICE_INQ_V.CLI_NAME CLI_NAMEからview Bに結合する場合はview AView A列が必要CLI_NAMEです。CLI_NAMEそうしないと、列に基づいて結合できません。

于 2012-10-24T16:51:45.957 に答える