Прежде всего, схема не моя.Это ужасно и очень запутанно.И предупреждение - это сложно.
У меня есть 3 таблицы - tbl_a
, tbl_b
и tbl_c
.switch
фактически является собственностью сущностей (записей) в tbl_a
.Но он доступен только через JOIN
на tbl_b
и затем 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_his
по одной записи на запись tbl_a
.С настоящими данными switch
это либо 0
, либо 1
.
Для каждой записи в tbl_a
с соответствующим switch
из 0
я должен добавить запись к tbl_his
как
NULL, 'a_id', '100'
Если для записипереключатель 1
Я должен добавить следующую запись в tbl_his
:
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')