【问题标题】:How to add filter functionality?如何添加过滤功能?
【发布时间】:2013-02-21 11:05:07
【问题描述】:

例如,我的 html 页面中有 4 个下拉列表。

DDL1 - OrgType
DDL2 - Region
DDL3 - Category
DDL4 - Sector

现在我怎样才能查询数据库并搜索 1 个 DDL?为了让自己清楚,这是场景

Select * 
from table1 
where OrgTypeId = 1 
  AND RegionId = 1 
  AND CategId = 1 
  AND SectorId = 1

现在,如果我只想搜索扇区 ID = 1 的扇区怎么办?而另一个 DDL 可以有什么价值?

【问题讨论】:

  • 你用 SQL Server 和 MySQL 标记了这个,你用的是什么数据库?
  • 对不起,,,我正在使用 mysql
  • 您需要动态构建 WHERE 子句以仅包含在下拉列表中选择值的字段,或者至少修改 where 子句,以便“未使用”字段始终评估为 true。
  • @MarcB 对不起,我不明白...你能给我举个例子吗?谢谢
  • 似乎与包含生成 where 要求的代码相关。

标签: java mysql jsp jakarta-ee servlets


【解决方案1】:

仅在WHERE 子句中包含您想要的条件。您可以通过动态构建查询并仅在需要时插入条件,或者将它们设置为 LIKE '%'IS NOT NULL 或根据您的架构始终返回 true 的内容来做到这一点。

例子:

--Removing unnecessary criteria
Select * 
from table1 
where SectorId = 1

--Making unused criteria always evaluate to true
Select * 
from table1 
where OrgTypeId >= 0 
  AND RegionId >= 0
  AND CategId >= 0 
  AND SectorId = 1

上面的第二个示例假设您的值都是ints,并且它们永远不会为空,但它可以适应大多数情况。

【讨论】:

  • 你能举个例子吗?
  • 啊好吧...但是这些值是我的下拉列表的值。我怎样才能将 >=0 值指定为我的 ddl 的值?
  • 这一切首先取决于您如何构建查询。是动态SQL吗?存储过程?
  • 但是您如何构建该代码并将下拉列表中的值传递到您的 SQL 语句中?
  • 我实际上构建了一个 JSP Web 应用程序...我像这样传递 ddl 的值 select * from table where id = ?
猜你喜欢
  • 1970-01-01
  • 2022-01-07
  • 2017-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-05
  • 2012-03-26
  • 2014-10-06
相关资源
最近更新 更多