【发布时间】:2022-01-19 03:21:40
【问题描述】:
首先,对于含糊的标题,我深表歉意。我有两个表:Devices 和 DeviceProperties。
[ Devices ]
[ id ]
[ AA ]
[ BB ]
[ CC ]
[ DeviceProperties ]
[ id ][ propertyType ][ propertyKey ][ valueType ][ value ]
[ AA ][ desired ][ scanInterval ][ Number ][ 100 ]
[ AA ][ tag ][ floor ][ Number ][ 200 ]
[ AA ][ desired ][ name ][ String ][ AA_Device ]
[ BB ][ desired ][ scanInterval ][ Number ][ 100 ]
[ BB ][ tag ][ floor ][ Number ][ 200 ]
[ CC ][ tag ][ floor ][ Number ][ 200 ]
我想选择所有具有特定设备属性的设备:
-- Select devices that have these DeviceProperties
[ desired ][ scanInterval ][ Number ][ 100 ]
[ tag ][ floor ][ Number ][ 200 ]
我声明了 N 个变量。每组 4 个声明的变量代表 DeviceProperties 表中不同的设备属性/行。
DECLARE @propertyType_1 nvarchar(max) = 'desired';
DECLARE @propertyKey_1 nvarchar(max) = 'scanInterval'
DECLARE @valueType_1 nvarchar(max) = 'Number'
DECLARE @value_1 nvarchar(max) = '100'
-- [ desired ][ scanInterval ][ Number ][ 100 ]
DECLARE @propertyType_n nvarchar(max) = 'tag';
DECLARE @propertyKey_n nvarchar(max) = 'floor'
DECLARE @valueType_n nvarchar(max) = 'Number'
DECLARE @value_n nvarchar(max) = '200'
-- [ tag ][ floor ][ Number ][ 200 ]
假设我有一个有效的查询,它只会返回以下设备:
[ Devices ]
[ id ]
[ AA ]
[ BB ]
不会返回设备 CC,因为它只有 DeviceProperty
[ tag ][ floor ][ Number ][ 200 ]
但不是
[ desired ][ scanInterval ][ Number ][ 100 ]
我真的很困惑我应该写什么样的查询。一个简单的 WHERE 查询在这里不起作用。
【问题讨论】:
标签: sql sql-server tsql