###前提・実現したいこと
以下のようなテーブルがあり、 テーブルusers
にデータを挿入したいとします。
その際、 companies.name
users.name
を持っておりますが...
companies.name
に関しては
テーブルcompanies
から companies.name
に対応する
companies.id
を取得(変換)して挿入する必要があるとします。
注意: companies.name / users.name は存在しない場合のみ挿入を行い、
既に存在する場合は 新たに挿入せず既存のデータを使用したいとします。
テーブル companies id int(11) NO PRI 0 name varchar(255) NO UNI created_at timestamp NO CURRENT_TIMESTAMP updated_at timestamp NO CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP テーブル users id int(11) NO PRI 0 company_id int(11) YES name varchar(255) NO UNI created_at timestamp NO CURRENT_TIMESTAMP updated_at timestamp NO CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP
###現在の手順
① テーブルcompanies
にデータ挿入。
(insert igonore を使用し既にデータが存在するかしないかにかかわらず実行。)
② テーブルcompanies
から companies.name
に対応するcompanies.id
を取得。
③ テーブルusers
にデータ挿入。
(insert igonore を使用し既にデータが存在するかしないかにかかわらず実行。)
この方法では 3回 sqlを実行しています。
###現在試行中
②③を insert文に selectを使用して組み合わせれないか試行中。
参考:http://www.dbonline.jp/sqlite/insert/index4.html
できれば 1文でできる方法を 例で挙げたテーブルで確認できるような 実際のsqlを含めて教えていただければ幸いです。
回答2件
あなたの回答
tips
プレビュー