- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个搜索页面,其中包含多个用于创建精确搜索的字段。每个字段都是可选的。我正在尝试开始制作我的 sql 查询,以便它可以在给定适当变量的情况下工作,但我遇到了麻烦。
这是我目前拥有的 SQL 查询:
SELECT
indicator.indid,
indicator.indicator,
indtype.indtype,
provider.provider,
report.report,
actor.actor
FROM
actor,
indicator,
indtype,
report,
provider
WHERE
indicator.indtypeid = indtype.indtypeid
AND indicator.actorid = actor.actorid
AND indicator.reportid = report.reportid
AND report.providerid = provider.providerid
AND indicator.indicator LIKE '%$indicator%'
AND indicator.indtypeid = $indtypeid;
每当我提供一个 indicator
和一个 indtypeid
时,搜索工作正常。但是,当我将 indtypeid
字段留空并将变量设置为 *
(作为其默认值)时,查询不会返回任何结果。我试过手动玩查询,它似乎不喜欢 *
或 %
符号。基本上,如果只指定了一个指标而没有指定 indtypeid
,我想返回所有 indtypeids
的所有指标。
我确信我遗漏了一些小东西,但如果能提供任何帮助,我将不胜感激。我可能一开始就错了。
最佳答案
试试这个:
SELECT i.indid, i.indicator, it.indtype,
p.provider, r.report, a.actor
FROM actor a
INNER JOIN indicator i ON a.actorid = i.actorid
INNER JOIN indtype it ON i.indtypeid = it.indtypeid
INNER JOIN report r ON i.reportid = r.reportid
INNER JOIN provider p ON r.providerid = p.providerid
WHERE 1 = 1
AND ($indicator IS NULL OR i.indicator LIKE '%$indicator%')
AND ($indtypeid IS NULL OR i.indtypeid = $indtypeid);
因此,如果您传递 $indicator = NULL
,那么第一个条件 AND ($indicator IS NULL OR i.indicator LIKE '%$indicator%')
将被忽略,因为它将解析为 True
,第二个条件也是如此。
我删除了其他 Where
条件并将它们替换为 JOIN
,并为 WHERE 1 = 1
使查询正常工作如果您将两个变量 $indicator
和 $indtypeid
传递给每个变量 NULL
值,在这种情况下它将返回自 以来的所有结果>1 = 1
始终为真。
关于mysql - 允许 MySQL 查询的可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10193521/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!