MySQL - 使用动态表名从另一个表加入最新值

时间:2017-11-14 10:57:13

标签: mysql

我有一个包含以下表格的MySQL数据库:

function ip_range_type($range_ip)
{
//if ip range provided is ipv4 then

//if ip range provided is ipv6 then
}

Items (ItemId, ItemName) Item1 (Time, Value) Item2 (Time, Value) Item3 (Time, Value) Item4 (Time, Value) . . ItemX (Time, Value) subscriptions (sub_id, sub_topic, pin, item_id, device_id) 表中的item_idsubscriptions表中ItemId的外键。

编号的项目表包含项目开启或关闭时的状态信息。生成所有Item表格,如果我修改它们,我会冒破坏的风险。

我希望能够从Items获取特定device_id的所有行,并将其与相应Item表中的最后记录状态连接起来,如下所示:

subscriptions

我使用以下查询获取特定device_id的所有行,然后手动获取每行的最后记录状态:

+--------+-----------+-----+---------+-----------+-------+
| sub_id | sub_topic | pin | item_id | device_id | value |
+--------+-----------+-----+---------+-----------+-------+
|      1 | topic1    |   5 |       1 |         1 | OFF   | <-- Last recorded Value from Item1
|      2 | topic2    |   4 |       4 |         1 | OFF   | <-- Last recorded Value from Item4
|      3 | topic3    |  14 |       3 |         1 | ON    | <-- Last recorded Value from Item3
|      4 | topic4    |  12 |       2 |         1 | ON    | <-- Last recorded Value from Item2
+--------+-----------+-----+---------+-----------+-------+

但我不知道如何将两者结合起来得到我想要的东西。必须根据第一个查询中每行的item_id动态确定要检查状态的表的名称。

我已经在SQLFiddle中创建了表格,以方便有人帮助我。 http://sqlfiddle.com/#!9/392fe

0 个答案:

没有答案