我有这个数据库存储传感器采集数据,
采集(acq)来自不同控制单元(cu)的固定间隔(日期时间)
每个采集在数据表中存储了许多不同的度量
acq
id
datetime
id_cu
data
id
id_acq
id_meas
value
我需要这种观点:
+---------------------+------+----+-----+
| datetime | v1 | v2 | v3 |
+---------------------+------+----+-----+
| 2010-09-13 00:05:00 | 40.9 | 1 | 0.3 |
| 2010-09-13 00:10:00 | 41.0 | 2 | 0.3 |
| 2010-09-13 00:15:00 | 41.1 | 4 | 0.3 |
+---------------------+------+----+-----+
作为:
v1是data.value(例如湿度),其中
acq.id_cu = 1 AND data.id_meas = 100
v2是data.value(例如计数器),其中
acq.id_cu = 2 AND data.id_meas = 200
v3是data.value(例如温度),其中
acq.id_cu = 3 AND data.id_meas = 300
依此类推,用户最多可以选择数十种组合
我结束了此查询,但与将要生产的数据相比,它永久占用的数据量很少
SELECT a1.datetime, d1.value, d2.value, d3.value
FROM
acq a1, data d1
JOIN acq a2, data d2
ON a2.id=d2.id_acq AND a2.datetime=a1.datetime
JOIN acq a3, data d3
ON a3.id=d3.id_acq AND a3.datetime=a1.datetime
WHERE a1.id=d1.id_acq
AND a1.id_cu=1 AND d1.id_meas=100
AND a2.id_cu=2 AND d2.id_meas=200
AND a3.id_cu=3 AND d3.id_meas=300
我想这将是更快的方法,可以分别为每个a1.id_centr=x AND d1.id_meas=y
条件获取数据,然后以我想要的方式打印应用程序中列出的数据。
实现这一目标的最佳(正确)方法是什么?
编辑:假设不缺乏收购我的意思是运行此:
SELECT datetime, value
FROM acq, data
WHERE acq.id=data.id_acq
AND (
id_cu=1 AND id_meas=100
OR id_cu=2 AND id_meas=200
OR id_cu=3 AND id_meas=300
)
ORDER BY id_cu, id_meas
由id_cu / id_meas进行的拆分结果会更改,并使用编程语言(如python + numpy)并排显示结果,这是几分之一秒还是……分钟?
假设DATETIME和data.id_acq以及cu和id_meas都有索引,则可以尝试使用带有伪列占位符和kludgey MAX()的UNION查询。如果您的data.values不是负数,这应该可以工作(如果是,则可以选择一个非常大的负数而不是零作为虚拟占位符值,该数字远远超出了可能的范围):
select FOO.datetime, max(FOO.v1), max(FOO.v2), max(FOO.v3)
from
(
select acq.datetime, data.value as v1,0 as v2, 0 as v3
from acq inner join data on acq.id = data.id_acq
where acq.id_cu=1 and data.id_meas=100
UNION
select acq.datetime, 0 as v1, data.value as v2, 0 as v3
from acq inner join data on acq.id = data.id_acq
where acq.id_cu=2 and data.id_meas=200
UNION
select acq.datetime, 0 as v1, 0 v2, data.value as v3
from acq inner join data on acq.id = data.id_acq
where acq.id_cu=3 and data.id_meas=300
) as FOO
group by FOO.datetime
问题内容: 这是情况:- 我有一个名为“用户”的表。由于所需的大多数数据是相同的,因此它包含学生和导师的用户数据。 完成该系统后,现在我被告知客户希望能够将学生分配给导师。 是否可以通过链接表在一个表内创建一对多关系的合法/干净方法? 我已经尝试过考虑这一点,但是我想出的任何解决方案似乎都是混乱的。 我将不胜感激。 谢谢 菲尔 问题答案: 您是否尝试过以下方法? 例如,创建一个新表(如果需要,请选
在我的属性模型中,我定义了这两个关系 在我的控制器中,我创建一个属性对象,并尝试获取已批准和挂起的图像。 变量是预期的。 然而,只是! 我尝试使用这个答案获取最后一个数据库查询,似乎挂起的查询甚至没有被执行。(最后一次查询运行已批准=1,这是针对关系。) 我怀疑这种关系可能是一个问题,但我被难住了。
问题内容: 假设我有一个包含200列的表格,其中大多数从未使用过。 我将SmallEntity映射到经常使用的10列。我在与其他实体的关联中使用它。它加载速度快,消耗很少的内存,让我很高兴。 但是有时我需要显示200列。我想在200列上映射BigEntity类。它没有绑定到其他实体,也没有关联。 问题:您有这样做的经验吗?您是否知道Hibernate可能会遇到的任何麻烦,例如在一级缓存,脏检查和实
问题内容: 这可能是更多的设计问题,但是我希望没有太多的伏都教徒是有可能的。 假设我有一个像这样的表: 我想得到这样的东西(ID在列中分组): 这可能吗?我已经尝试过以下查询… …但是我只得到公共节点: 我也尝试过在JOIN ON和WHERE上玩,但是似乎无法获得预期的结果。 我在网上可以找到的最接近的问题是这个,但我也无法使UNION正常工作。 性能不是问题,我可以假设只有2个小组。 有任何想法
问题内容: 因此,我收到此错误:#1066-不是唯一的表/别名:“购买” 我正在尝试执行以下操作: 空白表包括: 付款表包括: 采购表包括: 票务表包括: MCO_Blank表包含: 我不确定如何进行这项工作。 问题答案: 您需要使用表别名。您在子句中多次提到同一张表。查询是这样的: 我不得不猜测别名应该使用哪种付款方式和购买方式。这些在and子句中可能不正确。
问题内容: 目前,我正在执行以下查询: 但是,我想从表“ a”中检索记录,即使“ ac = null”,由于“ a”和“ c”之间的联接而无法检索。 我找到了有关的信息,但在这种情况下查询涉及两个以上的表时,我不知道该怎么做。 问题答案: select a.x, b.x, c.x from number as a left join customer as b on a.b = b.b left