プロが教えるわが家の防犯対策術!

MySQLを使用して、tableAというテーブルのデータを
tableB,tableC,tableDというテーブルに振り分けたいと思っています。
1日1回、自動的に行いたいと思っています。

たとえば、tableAのテーブル構成が下記のようなもので
==================
name
sex
birth
address
phone
email
company
==================

name,address,phoneはtableBに

name,sex,birthはtableCに

name,companyはtableDに分けるというような
イメージです。


私の考えでは、下記のようなSQL文をPHPから呼び出して、タスクで
実行させてそれぞれ別のテーブルに振り分けようと思っている
のですが、、もっと良いツールや方法があればお教えいただけ
ませんでしょうか。

宜しくお願いいたします。

----------------------------------------------------------------------------------------------------
INSERT INTO tableB (name,address,phone) SELECT tableA.name,tableA.address,tableA.phone FROM tableA
AND
INSERT INTO tableC (name,sex,birth) SELECT tableA.name,tableA.sex,tableA.birth FROM tableA
AND
INSERT INTO tableD (name,company) SELECT tableA.name,tableA.company FROM tableA;
----------------------------------------------------------------------------------------------------

A 回答 (1件)

毎回3回SQLを発行するがめんどうということ?


プロシージャーをつくっておけばよいのでは?

DROP PROCEDURE IF EXISTS INSERT_A_TO_BCD;
DELIMITER //
CREATE PROCEDURE INSERT_A_TO_BCD()
BEGIN
START TRANSACTION;
INSERT IGNORE INTO tableB (name,address,phone) SELECT name,address,phone FROM tableA;
INSERT IGNORE INTO tableC (name,sex,birth) SELECT name,sex,birth FROM tableA;
INSERT IGNORE INTO tableD (name,company) SELECT name,company FROM tableA;
COMMIT;
END
//
としておけば、あとはINSERT_A_TO_BCDをCALLしてやるだけです。

CALL INSERT_A_TO_BCD;
    • good
    • 0
この回答へのお礼

早速のお返事ありがとうございます。

まだ初心者で、ストアドプロシージャーを使用したことがなく、
発想もありませんでした。

深夜のタスクにする予定なので、3回SQLを発行しても負荷の問題は
なく、面倒ということもありませんが、これを機に勉強してみます!

ありがとうございます。

お礼日時:2011/07/04 11:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!