我需要为报告编写 SQL 查询。用户可以选择六个动态过滤器,即用户可以选择一个或两个最多六个过滤器。
在每个过滤器中,用户从下拉列表中选择设备的属性,操作员及其值用户需要输入。这构成了一个过滤器,例如:
AttributeName Operator Value
Cost equal 480
AND MappedName contains DummyString
这里“成本”是属性,“480”是值,整个事情由一个过滤器组成。在类似的时尚用户可以选择最大。6 个过滤器 两个过滤器之间的运算符也是动态的。它可以是“AND”或“OR”
在报告中,我需要为每个过滤器动态生成一个列以及一些静态列,例如设备名称、设备制造是静态列,而上述过滤器是动态的。
因此,当用户选择了两个过滤器时的报告将如下所示:
DeviceName DeviceManufactur Cost MappedName
D1 DM1 480 DummyString
D2 DM2 480 DummyString
在数据库中,属性存储如下:
DeviceName DeviceManufactur AttributeName AttributeValue
D1 DM1 Cost 480
D1 DM1 MappedName DummyString
D2 DM2 Cost 480
D2 DM2 MappedName DummyString
所以当我写简单的sql时
select d.name,d.manufacture,d.AttName,d.value
from Device d
where d.AttName='Cost' and d.AttValie='480'
and d.AttName='MappedName' and d.AttValue='DummyString'
尽管设备与这两个属性相关联,但它永远不会给我任何记录。
任何人都可以建议任何特定的 SQL 函数,这将有助于我有效地编写这个逻辑。