0

次のクエリを実行しようとしています:

 SELECT  
   PROMO_PLAN.promo_plan_id,  
   PROMO_PLAN.promo_plan_name,  
   PROMO.promo_category_code,  
   PROMO.promo_id,  
   PROMO.allow_plan_code,  
   PROMO_PLAN.event_type_code,  
   ( SELECT  
     NVL(PROMO_MAX_TIMING_DURATION_VW.duration, 900) 
    FROM  
   promo_max_timing_duration_vw 
    WHERE  
   PROMO_PLAN.promo_plan_id = PROMO_MAX_TIMING_DURATION_VW.promo_plan_id) 
  AS duration,  
   PROMO_PLAN.start_date,  
   PROMO_PLAN.end_date,  
   PROMO_PLAN.day_type_id 
  FROM  
   promo_plan,  
   promo 

 WHERE  
   PROMO_PLAN.promo_plan_id <> -1 
    AND PROMO_PLAN.promo_id = PROMO.promo_id 
    AND PROMO_PLAN.promo_plan_id = 18150
   AND '27/09/2012' BETWEEN PROMO_PLAN.start_date AND PROMO_PLAN.end_date
   AND (PROMO_PLAN.day_type_id = 1307001 

   OR PROMO_PLAN.day_type_id = -1)
   AND (PROMO_PLAN.promo_target_id = -1 
    OR  EXISTS ( 
      SELECT  
       1 
      FROM  
       promo_plan_channel 
      WHERE  
       PROMO_PLAN_CHANNEL.promo_plan_id = PROMO_PLAN.promo_plan_id 
        AND PROMO_PLAN_CHANNEL.channel_id = 10829))

エラーメッセージが表示されます:ORA-01427:単一行のサブクエリが複数の行を返します

最後のサブクエリを変更しようとしましたが、何も変わりませんでした。

誰かがそれを修正する方法を教えてもらえますか?

ありがとう

4

3 に答える 3

4

おそらくあなたの問題はそれです

 ( SELECT  
     NVL(PROMO_MAX_TIMING_DURATION_VW.duration, 900) 
    FROM  
   promo_max_timing_duration_vw 
    WHERE  
   PROMO_PLAN.promo_plan_id = PROMO_MAX_TIMING_DURATION_VW.promo_plan_id) 

複数の行を返します。

于 2013-06-30T11:58:41.397 に答える
2

この部分を削除すると、クエリは実行されますか?

   ( SELECT  
     NVL(PROMO_MAX_TIMING_DURATION_VW.duration, 900) 
    FROM  
   promo_max_timing_duration_vw 
    WHERE  
   PROMO_PLAN.promo_plan_id = PROMO_MAX_TIMING_DURATION_VW.promo_plan_id) 

もしそうなら、あなたは犯人を知っています。このサブクエリを変更して、最大 1 行を返すようにします。

于 2013-06-30T11:58:53.543 に答える