0

私は次のようなOracleコマンドを持っています

Select offers.OFR_STAT,OFFER_DETAILS.*,PrevData.*
From offers
INNER JOIN OFFER_DETAILS
    ON OFFER_DETAILS.OFFER_ID=offers.OFFER_ID
INNER JOIN (
    SELECT InnerOfrDtl.*
    FROM OFFER_DETAILS as InnerOfrDtl 
    WHERE InnerOfrDtl.offer_id=offers.offer_id
) AS PrevData
    ON PrevData.SCHEDULE_TYPE=OFFER_DETAILS.SCHEDULE_TYPE

実行中に「右括弧がありません」というエラーメッセージが表示されました。ここでは、内部結合にサブクエリを使用したいと考えていました。

4

3 に答える 3

1

閉じ括弧の後と前の AS を削除してみてくださいPrevData。私が理解しているように、Oracle はテーブルのエイリアスにキーワード AS を許可していません。


クエリにサブクエリは必要ありません。あなたは書くことができます:

SELECT o.OFR_STAT, d.*, p.*
  FROM offers o
  JOIN Offer_Details d ON d.Offer_ID = o.Offer_ID
  JOIN Offer_Details p
    ON p.Offer_ID = o.Offer_ID
   AND p.Schedule_Type = d.Schedule_Type

クエリが理にかなっていると完全に確信しているわけではありませんが、それはまったく別の問題です。

于 2012-07-16T06:54:03.207 に答える
0

ASサブクエリのキーワードを削除します。これは Oracle ではサポートされていません。

Select offers.OFR_STAT,OFFER_DETAILS.*,PrevData.*
From offers
INNER JOIN OFFER_DETAILS
    ON OFFER_DETAILS.OFFER_ID=offers.OFFER_ID
INNER JOIN (
    SELECT InnerOfrDtl.*
    FROM OFFER_DETAILS as InnerOfrDtl 
    WHERE InnerOfrDtl.offer_id=offers.offer_id
) PrevData  -- <<<< here is the change
    ON PrevData.SCHEDULE_TYPE=OFFER_DETAILS.SCHEDULE_TYPE
于 2012-07-16T06:55:56.040 に答える
0

古いバージョンの Oracle (確かに 8i、おそらく 9i も) では、明示的な INNER JOIN に問題があります。それらを暗黙的な (非 ANSI?) 内部結合に置き換えると、問題を解決できます。

https://forums.oracle.com/forums/thread.jspa?threadID=328028

于 2012-11-16T00:29:53.337 に答える