まず、スキーマは私のものではありません。それは恐ろしいと非常に混乱しています。そして警告 - これは複雑です。WHEREの結果に基づくINSERT INTO JOIN
私は3つのテーブル - tbl_a
,tbl_b
、およびtbl_c
を持っています。 switch
は実際にはtbl_a
のエンティティ(レコード)のプロパティです。しかし、それはtbl_b
上JOIN
、その後tbl_c
経由でのみアクセス可能です:
+---------+ +---------+ +---------+
| tbl_a | | tbl_b | | tbl_c |
+---------+ +---------+ +---------+
| a_id | +--> | b_id | +--> | c_id |
| b_fk | <--+ | c_fk | <--+ | switch |
+---------+ +---------+ +---------+
+---------+
| tbl_his |
+---------+
| his_id |
| a_fk |
| coef |
+---------+
私は第四表(tbl_his
)を作成する必要がある機能を追加するには - 私が行っています。このテーブルでは、coef
の列には1から100の任意の数値をとります。tbl_a
のレコードごとにテーブルtbl_his
を1つ設定する必要があります。現在のデータではswitch
は0
または1
です。 0
の関連switch
とtbl_a
の各レコードに対して
スイッチは私がtbl_his
に次のレコードを追加する必要があり1
あるレコードの場合tbl_his
NULL, 'a_id', '100'
として
にレコードを追加する必要がありますI:
NULL, 'a_id', '50'
このクエリはジョブの半分を実行しますか? 50
レコードと100
レコードを一度に実行する方法はありますか?
INSERT INTO `tbl_his` (`his_id`, `a_fk`, `coef`) VALUES (NULL, 'tbl_a.id', '100')
WHERE (
SELECT tbl_a.id
FROM tbl_a
LEFT JOIN tbl_b ON tbl_a.b_fk = tbl_b.id
LEFT JOIN tbl_c ON tbl_b.c_fk = tbl_c.c_id
WHERE tbl_c.switch = '0')
構文が無効です。 'VALUES()'リストの後ろに 'WHERE'はありません。 'FROM \' tbl_a'にバッククォートがありません –