質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

2回答

925閲覧

Insertを使って別のテーブルから違うカラムを入れるには?

dsato2

総合スコア0

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

1クリップ

投稿2021/11/05 05:07

こんにちはSQLのinsertについての質問です。

select * from Title ←このテーブルには下記の情報が入っていてます。
(ISBN,Title,SuggestedPrice,NumberInStock,PublisherCode,CategoryCode)

既にある上記のテーブルにinsertで
(ISBN,Title,SuggestedPrice,NumberInStock,PublisherName,CategoryCode)

(1021031217,'SQL is my life!',0.99,42, 'West',3)
を入れたく思っております(PublisherNameは別のテーブルにあります。)

その際に下記のコードを書いたのですが

INSERT INTO Title (ISBN, Title, SuggestedPrice, NumberInStock, publisherName, CategoryCode)
VALUES (1021031217,'SQL is my life!',0.99,42, 'West',3) select publisherName from publisher

Msg 207, Level 16, State 1, Line 1
Invalid column name 'publisherName'.と表示されてしまいます。
このように一つだけ別のテーブルから持ってくることは不可能でしょうか?

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2021/11/05 05:10

SQLの種類とバージョンを明示ください
dsato2

2021/11/05 05:14

コメントありがとうございます。 Microsoft.Azure.Management.Sql 1.33.0を使用しております。
neko_the_shadow

2021/11/05 06:20

TitleテーブルにpublisherNameというカラムが存在しないにも関わらず、INSERT文でpublisherNameを指定していることがエラーの原因かと思います (ちなみにDBMSはSQL Serverですかね?) やりたいことを整理させてください。「publisherNameが与えられるので、それに対応するpublisherCodeをpublisherテーブルから持ってきて、INSERTしたい」というのがやりたいことであっていますか?
dsato2

2021/11/05 06:32

neko_the_shadowさん コメントありがとうございます。 まさにこれをやりたいと考えておりました。わかりずらい質問内容で申し訳ございません。 「publisherNameが与えられるので、それに対応するpublisherCodeをpublisherテーブルから持ってきて、INSERTしたい」というのがやりたいことであっていますか?
guest

回答2

0

Publisherテーブルを利用すると、PublisherNameからPublisherCodeを一意に特定できるという前提をとります。やり方はいろいろありますが、たとえば以下のようなSQLで実現できるかと思います。

SQL

1INSERT INTO Title (ISBN, Title, SuggestedPrice, NumberInStock, PublisherCode, CategoryCode) 2VALUES (1021031217, 'SQL is my life!', 0.99, 42, (SELECT PublisherCode FROM Publisher WHERE PublisherName = 'West'), 3);

投稿2021/11/05 06:48

neko_the_shadow

総合スコア2349

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

insert into テーブルの構文では、
insert into テーブル valuesinsert into テーブル selectの何れかしか使用できません。
質問の内容からは以下のような感じになるでしょう。
※publisherが軸になるので、where条件が無ければ、publisher全件が追加される事になります。
Valuesの要素としてサブクエリーを記述出来そうな気もしますが、DBMSが明確ではないので。

SQL

1INSERT INTO Title (ISBN, Title, SuggestedPrice, NumberInStock, publisherName, CategoryCode) 2select 1021031217, 'SQL is my life!', 0.99, 42, publisherName , 3 3from publisher

※DBMSが明確ではないので、あくまでイメージです。
Microsoft.Azure.Management.SqlはDBツールであってDBMSではありません。
多分DBMSはSQLServerだと思いますが。

しかしなぜ、リファレンスを確認しないのでしょうか。
SQLServerならこちら:INSERT (Transact-SQL)を確認すれば、valuesselector表記になっている事が分かります。

投稿2021/11/05 06:28

編集2021/11/05 06:31
sazi

総合スコア25327

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問