• ベストアンサー

SQL (insert文)文の質問です。

すみません、緊急で調べる時間があまりなくてお尋ねします。 次のDBが2つあります。 データベース名:A_DATA 内容  名前     番号     登録年月日 これには既にデータが投入されています。 そして データベース名:B_DATA 内容  名前     番号     住所     電話     国籍 とあった場合B_DATAにinsertを行うのですが、 その際のデータの内容はA_DATAの内容を検索してその 値を投入したいのです。 A_DATAの検索条件は登録年月日が本日のもので B_DATAの名前と番号の値は 名前=A_DATAの名前 番号=A_DATAの番号 でINSERTしたいのです。 意味がわかりますでしょうか? 多量にデータがあるのでなんとかうまいSQLを考えてるのですが、あまり詳しくないもので。。。 すみません誰かよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

>それではOracleの場合 #2の方の回答は間違ってます。SQLエラーになります。 valuesの中にselectは記述できませんし、 CURRENT_DATEなんてキーワードありません。 insert into b_data select 名前, 番号 from a_data where 登録年月日 = truc(sysdate) または、 insert into b_data (名前, 番号) select 名前, 番号 from a_data where 登録年月日 = truc(sysdate) です。

rariko
質問者

お礼

ご丁寧にありがとうぎざいました。 皆さんの回答を参考にさせて頂きSQLが組めました。 ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (3)

回答No.4

>それではOracleの場合 Oracleなら、 (A) TRUNCATE TABLE B_DATA; (B) DROP TABLE B_DATA; のどちらでもOKです。

rariko
質問者

お礼

回答ありがとうございました。 皆さんの回答を参考にさせていただき、SQLが組めました。ありがとうございました

すると、全ての回答が全文表示されます。
回答No.2

それではOracleの場合 INSERT INTO B_DATA ("名前", "番号") VALUES ( SELECT "名前", "番号" FROM A_DATA WHERE "登録年月日" = CURRENT_DATE)

rariko
質問者

お礼

回答ありがとうございました。 皆さんの回答を参考にさせていただき、SQLが組めました。ありがとうございました。

すると、全ての回答が全文表示されます。
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

質問の意味は良くわかるのですが・・・ DBは? 緊急でといっても、最低これくらいは書かないと、 ご希望の回答は得られないですよ。 逆に、最終的な回答をもらえるのが遅くなりますよ。 あと、年月日のフィールド型は? 住所と電話と国籍は何を入れるんですか? >データベース名:A_DATA テーブル名ですよね? と、情報が足りなさ過ぎるので、勝手に条件をつけます。 DBはAccess 登録年月日はDate型 住所と電話と国籍にはNULL なら、 insert into b_data select 名前, 番号 from a_data where 登録年月日 = date() となります。

rariko
質問者

お礼

お礼が遅くなりすみません。 確かに情報不足・説明不足でした、すみません。 DBはSybaseでした。 上記を参考にさせていただき、SQLが組めました。 ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A