• 締切済み

SQLの書き方を教えてください。

初めまして。sql初心者です。OracleのSQLについて質問があります。 「update Aテーブル set Aテーブル.構成順 = (select Bテーブル.順番 from Bテーブル where Aテーブル.ID = Bテーブル.ID and Aテーブル.種類 = Bテーブル.種類CD)」 こういった内容のSQLって発行できるんでしょうか。 Bテーブル.種類CDの"種類CD"で「コンポーネント"種類CD"を宣言してください」というエラーになります。 書き方が分かりません。。 すいませんが教えていただきたく思います。 よろしくお願いいたします。

みんなの回答

  • 3rd_001
  • ベストアンサー率66% (115/174)
回答No.2

書けます。以下のような感じでSQLを発行します。 update Aテーブル a set ( Aテーブル.構成順 ) = ( select b.Bテーブル.順番 from Bテーブル b where a.Aテーブル.ID = b.Bテーブル.ID and a.Aテーブル.種類 = b.Bテーブル.種類CD ) where exists (SELECT 'X' FROM Bテーブル x where a.Aテーブル.ID = x.Bテーブル.ID and a.Aテーブル.種類 = x.Bテーブル.種類CD ); updateの構文は以下マニュアルを参照。 http://otndnld.oracle.co.jp/document/products/oracle11g/111/doc_dvd/server.111/E05750-02/statements_10.htm#25687 OracleでSQLを書いた場合のエラー対処方法としては、 1.エラーコードを確認する。  ※ORA-XXXXXX、PLS-XXXXXのようなエラーコード。   これをマニュアル「エラー・メッセージ」で確認。   対処法を確認する。 2. SQLリファレンスを確認。   マニュアルのSQLリファレンスを確認し、構文をチェックする。 3. SQLを発行したツールを確認する。  ツールが対応していない場合もありえるので、  Oracle標準のツール「SQL*Plus」で発行してみる。  まずは単体のSQLがSQL*Plusで発行できるか確認してください。

techuchu
質問者

お礼

3rd_001様 お礼が遅くなり大変申し訳ありませんでした。 回答ありがとうございました。 対処法まで記載していただきとても嬉しかったです。 質問内容につきましては、解決いたしました。 本当にありがとうございました。

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

その構文自体はOKです(できます)。 しかし、気になるのはエラーメッセージです。 それはPL/SQLのエラーメッセージだと思うのですが、どうやって実行していますか?

techuchu
質問者

お礼

jamshid6様 お礼が遅くなり大変申し訳ありませんでした。 回答ありがとうございました。 質問内容につきましては、解決いたしました。 ありがとうございました。

関連するQ&A