我有一个包含以下表格的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_id
是subscriptions
表中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