我会使用Postgresql作为数据库,以防万一,尽管我想找到一种纯SQL方法而不是特定于Postgresql的实现。
我有大量的制造电子产品的测试数据,我想从测试中获取满足一定条件的单元数据,最好使用包含测试的单独表格每个制造步骤的标准。
作为一个简单的示例,假设我在测试的两个不同步骤中检查了设备的温度回读。步骤1中的温度应在20C-30C之间,而步骤2中的温度应在50C-60C之间。
我们假设下面的表结构带有一组示例数据(表名“ test_data”):
temperature step serial_number
25 1 1
55 2 1
19 1 2
20 2 2
,并假设下表包含上述通过条件(表名称“ criteria”):
temperature_upper temperature_lower step
20 30 1
50 60 2
目前,使用静态方法,我只能使用以下查询:
SELECT * FROM test_data WHERE
( test_data.step = 1 AND test_data.temperature > 20 AND test_data.temperature < 30 ) OR
( test_data.step = 2 AND test_data.temperature > 50 AND test_data.temperature < 60 );
这将有效地产生下表:
temperature step serial_number
25 1 1
55 2 1
我想使选择查询更具动态性,而不是开始静态定义,而是使其从test_criteria表的结果列表中构造自身。希望将其扩展为一个复杂的查询,例如在步骤1中可以检查温度,电压和电流,而在步骤2中仅可以检查电流。
感谢您的见解!
答案 0 :(得分:1)
您可以使用表之间的联接来解决
SELECT t.*
FROM test_data t
INNER JOIN criteria c ON t.step = c.step
AND t.temperature > c.temperature_upper
AND t.temperature < c.temperature_lower
或者如果需要> =和<=
SELECT t.*
FROM test_data t
INNER JOIN criteria c ON t.step = c.step
AND t.temperature netween c.temperature_upper AND c.temperature_lower