-1

表 1 説明

'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 説明

'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 説明

'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 説明

'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 説明

'Time_Stamp', 'datetime', 'YES', '', '', ''
'Meter_ID', 'int(10) unsigned', 'YES', '', '', ''
'Address', 'int(10) unsigned', 'YES', '', '', ''
'Value', 'double', 'YES', '', '', ''

表 6 説明

'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 つのテーブルの説明です。table 2 から table 5 までのテーブルを使用して、 table 1 に挿入する必要があります。

これらのテーブルの結合について混乱しています。

テーブル 1 の Input_value、output_value は、テーブル 5 の値から選択する必要があります。

テーブル 1 の input_unit_id 、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;  
4

1 に答える 1

0

2 つのテーブルを結合する場合、両方のテーブルが持つ識別子を選択する必要があります。また、選択クエリに正しい名前を付ける必要があります。

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;  
于 2013-08-27T09:22:19.097 に答える