お世話になっております。
(目的と状況)
現在、tableAとtableBが存在しており
tableAにはnameというカラムの情報だけ直接Insertできないため、
(上段のPDOの処理)
tableBからwhere句でsecidが一致するものを持ってくるようにプログラムを組んでおあります。
(下段のPDOの処理)
tableAは毎日データが流し込まれ、レコードが日々追加されていくイメージです。
(問題点)
やりたいことは上述の通り、tableAにかけているnameカラムだけをtableBから抽出したいのですが、うまくデータを流し込むことができません。
まず自分でもわかっていることですが、下段のPDOの処理でInsertを使った場合、異なる新しいカラムとして追加されてしまうため、Insetを使ってはいけないことは承知しております。ただし、updateを使用した場合、日々tableAが当該テーブルの増え続けていくことが想定される中、過去にInsertしたレコードについても、その都度updateで過去のレコードに対するnameもつど更新され、これも望ましくないと考えております。
(ご質問)
毎日tableAがInsertされるとともに、その日のかけているnameのカラムだけをtableBから取得する(過去に取得したnameは更新しない)方法はございますでしょうか。
テーブルのイメージは下記の通りです。
tableA
1,NULL,100,15:00,+100,+10%,100,100,5%,5%
2,......以下省略
*2カラム目がnameです。
tableB
1,Acompany,
*1をKeyにしてNullにAcompanyを入れたいですが、毎日1のデータが入ってくるので
updateすると過去のrecordの1も改めてupdateされてAcompanyを持ってきてしまう
ということです。
そもそも複数のprepareを一度にexecuteも認められるのか。。。
try { $pdo = new PDO($dsn, $user, $password); $stmt = $pdo ->query("SET NAMES utf8;"); for ($ii=0; $ii <=216 ; $ii+=9){ $stmt = $pdo->prepare("INSERT INTO tableA (secid,price,timeon,incamt,fluxratio,nav,preddiv,yield,fluxyield) VALUES (:secid,:price,:timeon,:incamt,:fluxratio,:nav,:preddiv,:yield,:fluxyield)"); $stmt->bindValue(':secid', $matches[1][$ii], PDO::PARAM_INT); $stmt->bindValue(':price', $matches[1][$ii+1], PDO::PARAM_INT); $stmt->bindValue(':timeon', $matches[1][$ii+2], PDO::PARAM_STR); $stmt->bindValue(':incamt', $matches[1][$ii+3], PDO::PARAM_STR); $stmt->bindValue(':fluxratio', $matches[1][$ii+4], PDO::PARAM_STR); $stmt->bindValue(':nav', $matches[1][$ii+5], PDO::PARAM_INT); $stmt->bindValue(':preddiv', $matches[1][$ii+6], PDO::PARAM_INT); $stmt->bindValue(':yield', $matches[1][$ii+7], PDO::PARAM_STR); $stmt->bindValue(':fluxyield', $matches[1][$ii+8], PDO::PARAM_STR); $stmt->execute(); $stmt = $pdo->prepare("INSERT INTO tableA(name) SELECT name FROM tableB WHERE secid=:secid"); $stmt->bindValue(':secid', $matches[1][$ii], PDO::PARAM_INT); $stmt->execute(); }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/24 12:18
2016/08/24 12:22
2016/08/24 12:46
2016/08/24 14:20
2016/08/24 14:37
2016/08/24 14:41
2016/08/24 14:46
2016/08/24 14:48
2016/08/24 15:02
2016/08/24 15:11
2016/08/24 15:35