【发布时间】:2017-05-16 12:14:01
【问题描述】:
我有以下问题:
我有一个包含材料属性的 Oracle 数据库,我正在为它开发一个 Excel-VBA 前端。
有一个视图 ALL_TESTS 表示我要从中加载数据表中所有属性的整个表。准确地说,我得到了一个属性列表,每个属性都在特定条件下进行了特定测试,并带有样本的状态。对于公司的一种材料,我总是希望加载整个包。
如果我会这样做:
SELECT * FROM ALL_TESTS WHERE COMPANY in (Company1, Company2, ...)
AND MATERIAL (Material1,Material2, ... )
AND Test in (Test1,Test2, ...)
AND Property in (Property1, Property2, ...)
AND Condition in (Condition1, Condition2, ...)
AND State in (State1,State2, ...)
我不仅会得到我想要的测试,还会得到索引不匹配的记录。例如,当记录匹配 company1、material2、test3、property4 和 State2 时。但这不是我想要的,我想要的是:
SELECT * FROM ALL_TESTS WHERE (COMPANY = Company1
AND MATERIAL = Material1
AND Test = Test1
AND Property = Property1
AND Condition = Condition1
AND State = State1)
OR (COMPANY = Company2
AND MATERIAL = Material2
AND Test = Test2
AND Property = Property2
AND Condition = Condition2
AND State = State2)
OR ...
我有一种方法可以用更优雅的方式编写它,然后只构建一个超长的 SQL 查询?
感谢您的宝贵时间!
【问题讨论】: