在 Asp.net 页面中组织一组 PL-sql 查询
Posted
技术标签:
【中文标题】在 Asp.net 页面中组织一组 PL-sql 查询【英文标题】:Organize a Set of PL-sql query in Asp.net page 【发布时间】:2013-05-20 15:52:51 【问题描述】:我有一个用户可以选择多个值的界面:
输入 x:
a , b , c , d .....(100 values for have an estimation )
输入y:
aa, bb, cc, dd .... (100 values for have an estimation )
我只有 1 个查询应该根据输入 x 和 y 更改(where 条件)。
例如,如果用户选择:
a,b (for x)
和
aa,bb
查询应该是:
select * from Table where condition1 = a and condition2 = aa
select * from Table where condition1 = b and condition2 = aa
select * from Table where condition1 = a and condition2 = bb
select * from Table where condition1 = b and condition2 = bb
所以它是所有组合的笛卡尔积......
所以我的问题是如何优化查询?我不知道有人告诉我使用 NVL 功能
http://www.techonthenet.com/oracle/functions/nvl.php你能帮我把它放在一个好的结构上吗?谢谢
一件重要的事情:
用户不能为其中一个输入选择任何内容
【问题讨论】:
【参考方案1】:你可以做condition1 in (x values list) and condition2 in (y values list)
试试这个
select * from Table
where (@x is null or condition1 IN ('a','b'))
and (@y is null or condition2 in ('aa','bb'));
例子:
WITH CTE AS
(
SELECT 'a' COL1, 'aa' COL2 FROM DUAL
UNION ALL
SELECT 'a' COL1, 'bb' COL2 FROM DUAL
UNION ALL
SELECT 'a' COL1, 'cc' COL2 FROM DUAL
UNION ALL
SELECT 'b' COL1, 'aa' COL2 FROM DUAL
UNION ALL
SELECT 'b' COL1, 'bb' COL2 FROM DUAL
UNION ALL
SELECT 'b' COL1, 'cc' COL2 FROM DUAL
UNION ALL
SELECT 'b' COL1, null COL2 FROM DUAL
)
select * from cte where col1 in ('a','b') and col2 in ('aa','bb');
SQL DEMO
【讨论】:
对不起,你能解释一下这是如何工作的吗?我的表名在哪里? @frank,这是一个示例,您复制该 sql 并对其进行修改以包含您的表和列。我用与您的问题匹配的 sql 更新了帖子。 ahhhhhhhh 好的,这是一个展示如何使用“In”语句的示例 您是否认为从性能的角度来看,如果我有 100 x 100 的值,在声明中会非常快吗? 您现在如何返回数据?性能方面有多糟糕?以上是关于在 Asp.net 页面中组织一组 PL-sql 查询的主要内容,如果未能解决你的问题,请参考以下文章