我想显示3个表(数据记录,温度,压力)的列值,如下所示,我的查询也如下所示,但这里的温度值是重复的,我想要特定日期的所有相应值我该怎么做?请有人帮帮我吗?
表是
datalogging5
name shift name operator id date plant line machi
------- ----------- --------- --- ----------------------- ------ ----- -----
ashwini shift1(7-3) Operator1 102 2011-06-07 00:00:00.000 Plant1 Line1 mc1
pradeep shift1(7-3) Operator1 101 2011-06-06 00:00:00.000 Plant1 Line1 mc1
...
温度图
temprature time date
---------- ----------------------- -------------------
27 1900-01-01 15:45:41.000 2011-06-06 00:00:00
27.3 1900-01-01 15:50:41.000 2011-06-06 00:00:00
...
压力
temprature time date
---------- ----------------------- -------------------
0.5 1900-01-01 15:45:41.000 2011-06-06 00:00:00
0.7 1900-01-01 15:50:41.000 2011-06-06 00:00:00
...
我的SQL查询是
select Date=convert(varchar(12),(t1.date),101), t1.time, operatorname,
machine, line, t2.time, Temprature, Pressure
from datalogging5 t
inner join temprature t1 on t1.date=t.date
inner join pressure t2 on t.date=t2.date order by t.date
答案 0 :(得分:1)
我不是特别流利的SQL,所以如果我做错了让我知道,但你不能只做一些事情:
SELECT CONVERT(varchar(12),(t1.date),101) AS Date, t1.time, t.operatorname,
t.machine, t.line, t2.time, t1.temprature, t2.pressure
FROM datalogging5 t
INNER JOIN temprature t1 ON t1.date=t.date
INNER JOIN pressure t2 ON t.date=t2.date
WHERE t.date = '2011-6-10'
ORDER BY t.date;
您可以将2011-6-10
替换为您的搜索查询。
至于你的温度重复问题,我认为问题是你试图通过日期列连接表。有多个数据记录或温度条目可能具有相同的日期,因此当您运行查询时,它将为每个匹配的记录显示一次,使其看起来像重复。
无论如何,请告诉我该代码是否与您所寻找的无关。
答案 1 :(得分:1)
您需要在日期和时间加入温度和压力表(因为它们显然存储在单独的列中)
Select D.Date, T.Time...
From DataLoggings As D
Join Temperature As T
On T.Date = D.Date
Join Pressure As P
On P.Date = T.Date
And P.Time = T.Time
您的架构和此查询有一些问题:
您可以考虑使用测量表而不是单独的温度和压力表。如下所示:
Create Table Measurements
(
ReadingType varchar(15) not null
, Reading float not null
, Date date not null
, Time time not null
, Check( ReadingType In('Temperature','Pressure') )
)