2016-04-21 3 views
0

мне нужно вставить данные в набор столбцов в data_table (таблица 1) из alarm_status_log_table (таблица 2, все это), а другой набор данных в data_table (таблицу 1) из channel таблицы (таблица 3, просто имя и описание), заполняя таким образом data_table (таблица 1).Mysql множественная одновременная вставка в запросы

Но проблема в том, что имя & описание колонки, которые мне нужно передать на data_table, должны быть в той же строке, что и alarm_id, с которыми они соответствуют. То, что alarm_id совпадает с channel_id из таблицы channel, которая, как оказалось, уже имеет имя и описание, которые я хочу отправить в data_table.

В основном я хочу сказать:

Insert (name, description) from channel(table 3) into data_table(name, description) where channel_id = alarm_id 

Как я могу продолжить?

enter image description here enter image description here

ответ

1

Можно сделать обновление JOIN, как это:

UPDATE data_table a 
INNER JOIN table3 b ON a.alarm_id = b.channel_id 
SET a.name=b.name, a.description=b.description 

Если вы не хотите обновить, вы можете просто присоединиться к таблицам? Возможно, было бы лучше создать объединенный вид; это позволит избежать избыточных несогласованных данных.

+0

проблема в том, что название и описание в 'channel' таблицы должны быть упорядочены в' data_table' таким образом, что они соответствуют к ' alarm_id' так если 1-й аварийный сигнал - номер 213, имя, связанное с 'channel_id' 213 в' channel', должно быть 'channel 1 temp' в первой строке. Объединенный взгляд не даст мне этого, если я не ошибаюсь. – TheConquistador

+0

вот что-то я придумал, создавая 'device_status_log' таблицу, используя' внутренний запрос JOIN': 'ВЫБРАТЬ channel.channel_id, channel.name, channel.description ОТ канала INNER JOIN device_status_log на канале .channel_id = device_status_log.alarm_id; ' Это сортирует их в правильном порядке, но теперь мне нужно разместить их в указанном порядке в полях, приписываемых имени и описанию в моей финальной таблице. – TheConquistador

0

Все мне нужно сделать, это использовать VIEW, так как переназначения данных, поступающие из двух таблиц в третью таблицу довольно сложен, вот сценарий я использовал, чтобы получить представление я хотел:

SELECT channel.name, channel.description, alarm_status_log.* FROM data2desk.alarm_status_log LEFT JOIN data2desk.channel ON channel.channel_id=alarm_status_log.alarm_id

и это сделал трюк :)

final view

Смежные вопросы