前提・実現したいこと
CSVから読み込んだ複数の[code][sid]より、S_TABLEにデータをINSERTしたいです。
1.MySQLを利用します。
2.PHP は Symfony を利用します。
3.'S_TABLE'にデータを入れる為のSQLが知りたいです。(←ご教授頂きたい場所)
4.全てのカラムデータは複数ある想定です。
5.'---'はカラムが無いイメージです。
6.TempTBLは、CSVから読み込んだ一時TABLEです。
7.CSVで取得したcode,sidをC_TABLEとS_TABLEへ登録致します。
8.S_TABLEへ登録する際は、GrpNo内で重複しないようにすることとなっております。
(table\カラム) | GrpNo | InfoNo | id | code | sid |
I_TABLE | GNo | INo | --- | --- | --- |
C_TABLE | --- | INo | xxx | cd | --- |
TempTBL | --- | --- | --- | cd | nnn |
↓ ↓ ↓
S_TABLE | GNo | INo | xxx | --- | nnn |
◆ご質問にあったCSVのサンプルについて
codeとsidの2列となっております。
cd_1,nnn_1
cd_2,nnn_2
:
◆ご質問にあったS_TABLEについて
既存TABLEであり、データは入っております。
◆ご質問にあったカラムが無い('---')について
I_TABLEは、GrpNo,InfoNoを持っています。
C_TABLEは、InfoNo,id,codeを持っています。
TempTBLは、一時的に作成するのですが、code,sidを持っています。
↓
上記よりSQLを使い、
S_TABLEへ、GrpNo,InfoNo,id,sidを登録したいです。
発生している問題・エラーメッセージ
SQL文が分からない為、教えて欲しいです。(MySQL) (一応、PHP(symfony)で利用)
該当のソースコード
CREATE TEMPORARY TABLE `TempTBL; INSERT INTO TemTBL values (CSVのcodeリスト, CSVのsidリスト); INSERT INTO S_TABLE ( GrpNo, InfoNo, id, sid ) SELECT I.GrpNo, Info.INo, C.id, T.sid FROM I_TABLE I, C_TABLE, TempTBL T WHERE I.INo = C.INo AND C.code = T.Code ; もしくは 今日、勉強したてなのですが 下記の方が正解に近いかな?と考えております。 INSERT INTO S_TABLE ( GrpNo, INo, id, sidm ) SELECT I.GrpNo, I.INo, C.id, T.sidm T.nnn FROM TempTBL as T INNER JOIN C_TABLE as C ON T.code = C.Code INNER JOIN I_TABLE as I ON C.INo = I.INo;
補足情報
SQLで完結させたいのですが、一応、PHP 4(sympony)を利用しております。
特に知りたい部分は、【3.】のSQL、S_TABLEを作成するSQLが知りたいです。
どうか、ご教授のほど、
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー