我有這個DB存儲傳感器採集數據,
收購(ACQ)來自以固定間隔(日期時間)
每個採集具有存儲在數據許多不同的措施不同的控制單元(CU)表多JOIN視圖上相同的表
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 |
+---------------------+------+----+-----+
AS:
V1是data.value(例如,溼度)
WHERE acq.id_cu = 1 AND data.id_meas = 100v2是data.value(例如,計數器)
WHERE ACQ。 id_cu = 2且data.id_meas = 200v3是data.value(例如溫度)
WHERE acq.id_cu = 3 AND data.id_meas = 300
等多達幾十種組合的用戶choosen
我結束了與此查詢,但它永遠呈現相比,一個將在生產
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的)顯示並排結果一側的分裂結果是物質的幾秒鐘與...分鐘的關係?
什麼是您的數據庫,MS MSQL? – smirkingman 2010-12-17 12:43:12