我有一组数据(表格),如下所示。
+---------+---------+---------+-----------+
| Name | Surname | Country | Status |
+---------+---------+---------+-----------+
| Ryan | Gosling | U.S.A. | Citizen |
| Raymond | Green | Germany | Citizen |
| Andrew | Hollow | U.S.A. | Immigrant |
| Sam | Giggs | U.S.A. | Citizen |
+---------+---------+---------+-----------+
用户可以执行以下任务,
- 搜索(姓名)无过滤条件(国家/地区和状态)
- 搜索(姓名)+ 一个或两个过滤器(国家/地区和状态)
- 不搜索(名字或姓氏),但使用一个或两个过滤器(国家/地区和状态)
我应该编写哪些查询来解决此问题?
编辑: 由于罗布拒绝做我的作业😜,让我解释一下我做了什么!这不道德,但确实有效。
如果用户使用名字或姓氏作为关键字搜索表,我会使用 OR 查询带来这些结果。然后在 for 循环中通过选定的过滤器数组(如果有)运行该结果,并通过删除重复条目来显示最终结果。 如果没有执行搜索并且仅应用了一组过滤器,那么我将带来整个表并按上述方式运行 for 循环。 如果仅执行搜索,那么我将使用上述 OR 查询来获取剥离结果。
最佳答案
您处理此问题的方式是错误的,sqlite 中没有过滤器或搜索,您有 WHERE
子句和一些逻辑运算符,您可以将它们组合起来执行您想要的操作。以下是 2 的示例:
SELECT * FROM [tableName] WHERE (Name = "something" OR Surname = "somethingElse") AND (Country = "someContry" OR Status = "someStatus");
你只需要弄清楚逻辑,重要的是用括号分隔每个部分。
关于javascript - SQLite 查询在 JavaScript 中执行搜索和多个过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42984405/