表1 desc
'edb_actual_data_id', 'bigint(20) unsigned', 'NO', 'PRI', '', 'auto_increment'
'meter_parameter_type_map_id', 'int(10) unsigned', 'NO', 'MUL', '', ''
'date_time', 'datetime', 'NO', 'MUL', '', ''
'input_value', 'double', 'NO', '', '', ''
'input_unit_id', 'int(10) unsigned', 'NO', 'MUL', '', ''
'output_value', 'double', 'NO', '', '', ''
'output_unit_id', 'int(10) unsigned', 'NO', 'MUL', '', ''
'has_been_processed', 'tinyint(1)', 'NO', 'MUL', '', ''
表2 desc
'meter_parameter_type_id', 'int(10) unsigned', 'NO', 'PRI', '', 'auto_increment'
'name', 'varchar(50)', 'NO', 'UNI', '', ''
'unit_id', 'int(10) unsigned', 'NO', 'MUL', '', ''
'is_negative_value', 'tinyint(1)', 'NO', '', '', ''
表3 desc
'meter_parameter_type_map_id', 'int(10) unsigned', 'NO', 'PRI', '', 'auto_increment'
'meter_id', 'int(10) unsigned', 'NO', 'MUL', '', ''
'meter_parameter_type_id', 'int(10) unsigned', 'NO', 'MUL', '', ''
'min', 'double', 'NO', '', '', ''
'max', 'double', 'NO', '', '', ''
'meter_thread_id', 'int(10) unsigned', 'NO', 'MUL', '', ''
'meter_parameter_name', 'varchar(100)', 'NO', '', '', ''
'baselineEnabled', 'tinyint(1)', 'NO', '', '', ''
'meter_parameter_type_map_transalation_id', 'int(10) unsigned', 'NO', 'MUL', '', ''
表4 desc
'meter_id', 'int(10) unsigned', 'NO', 'PRI', '', 'auto_increment'
'name', 'varchar(100)', 'NO', 'MUL', '', ''
'parent_id', 'int(10) unsigned', 'YES', 'MUL', '', ''
'building_id', 'int(10) unsigned', 'NO', 'MUL', '', ''
'meter_type_id', 'int(10) unsigned', 'NO', 'MUL', '', ''
'add_to_parent', 'tinyint(1)', 'NO', '', '', ''
'meter_group_id', 'int(10) unsigned', 'YES', 'MUL', '', ''
表5 desc
'Time_Stamp', 'datetime', 'YES', '', '', ''
'Meter_ID', 'int(10) unsigned', 'YES', '', '', ''
'Address', 'int(10) unsigned', 'YES', '', '', ''
'Value', 'double', 'YES', '', '', ''
表6 desc
'ID', 'int(10) unsigned', 'NO', 'PRI', '', 'auto_increment'
'NAME', 'varchar(45)', 'NO', 'UNI', '', ''
'GROUP_ID', 'int(10) unsigned', 'NO', 'MUL', '', ''
'STANDARD', 'tinyint(1)', 'NO', '', '', ''
这些是我所拥有的6张桌子的描述。我需要使用表2到表5中的表格并插入表1中。
我对加入这些表感到困惑。
表1中的input_value,output_value必须从表5中的值中选取。
input_unit_id,表1中的output_unit_id必须从表6中的id中挑选,其中表6中的id =表2中的unit_id
请任何人告诉我我该怎么做。
我尝试了下面的查询,但我很困惑我提供的连接。
INSERT INTO edb_actual_data
(meter_parameter_type_map_id,
date_time,
input_value,
input_unit_id,
output_value,
output_unit_id,
has_been_processed)
SELECT t2.meter_parameter_type_map_id,
t1.time_stamp,
t1.value,
t3.id,
t1.value,
t3.id
FROM `eb1_remote`.`eb1_test1` t1
INNER JOIN `siruseri`.`meter_parameter_type_map` t2
INNER JOIN `siruseri`.`meter` t4
ON t4.meter_id = t1.meter_id
INNER JOIN `siruseri`.`meter_parameter_type` t5
INNER JOIN `siruseri`.`unit` t3
ON t3.id = t5.unit_id;
答案 0 :(得分:0)
如果连接两个表,则必须选择两个表都有的标识符。 此外,您还必须为您的选择查询指定正确的名称:
INSERT INTO edb_actual_data
(meter_parameter_type_map_id,
date_time,
input_value,
input_unit_id,
output_value,
output_unit_id,
has_been_processed)
SELECT t2.meter_parameter_type_map_id,
t1.time_stamp AS date_time,
t1.value AS input_value,
t3.id AS input_unit_id,
t1.value AS output_value,
t3.id AS output_unit_id
FROM `eb1_remote`.`eb1_test1` t1
INNER JOIN `siruseri`.`meter_parameter_type_map` t2
ON t1.meter_parameter_type_id = t2.meter_parameter_type_id
INNER JOIN `siruseri`.`meter` t4
ON t4.meter_id = t1.meter_id
INNER JOIN `siruseri`.`meter_parameter_type` t5
ON t5.Meter_ID = t3.meter_id
INNER JOIN `siruseri`.`unit` t3
ON t3.id = t5.unit_id;