2017-07-20 50 views
0

私は本当にここで困惑しています。テーブルに表示する必要があるすべての値があり、このコードはラボによって提供されましたが、何らかの理由でrental_item_price列に値が入力されません。それがnullのままなら、私はNOT NULLの列に拘束を加えることができるように迷惑コードを追加する必要があります。なぜこのコードがうまくいかないのでしょうか?なぜカラムにデータが入力されないのですか

UPDATE rental_item ri 
SET  rental_item_price = 
     (SELECT p.amount 
     FROM  price p INNER JOIN common_lookup cl1 
     ON  p.price_type = cl1.common_lookup_id CROSS JOIN rental r 
       CROSS JOIN common_lookup cl2 
     WHERE p.item_id = ri.item_id AND ri.rental_id = r.rental_id 
     AND  ri.rental_item_type = cl2.common_lookup_id 
     AND  cl1.common_lookup_code = cl2.common_lookup_code 
     AND  r.check_out_date 
        BETWEEN p.start_date AND NVL(p.end_date, TRUNC(SYSDATE) + 1); 

私は間違った質問をしたり、あまりにも多くの考えを入れているかもしれません。私が受けていますエラーは、この

UPDATE rental_item ri 
ERROR at line 1 
ORA-00921: unexpected end of SQL command 
+0

エラーが発生したすべての使用済みテーブル([mcve])のデータを提供する必要があります。 –

+0

私は私がフォローしているか分からない。私はそれが役立つ場合は、行1にora-00921エラーが表示されます。 – Chris

+0

そして、ORA-00921に関する文書には何が書かれていますか? –

答えて

0

は、あなたがしてselect文を開いている(が、それを閉じることはありません。追加)最後に。

UPDATE rental_item ri 
SET  rental_item_price = 
     (SELECT p.amount 
     FROM  price p INNER JOIN common_lookup cl1 
     ON  p.price_type = cl1.common_lookup_id CROSS JOIN rental r 
       CROSS JOIN common_lookup cl2 
     WHERE p.item_id = ri.item_id AND ri.rental_id = r.rental_id 
     AND  ri.rental_item_type = cl2.common_lookup_id 
     AND  cl1.common_lookup_code = cl2.common_lookup_code 
     AND  r.check_out_date 
        BETWEEN p.start_date AND NVL(p.end_date, TRUNC(SYSDATE) + 1)) 
+0

それは全体を解決しました。レネありがとう。 – Chris

関連する問題