我有一个问题,也许我做错了 因为我创建了两个不同的搜索功能,他们有自己不同的功能搜索 一个是SKU,一个是Date
我已经为MySQL和Workbench创建了一个代码,它在我使用
时工作正常SELECT
settlement_id, sku
FROM
settlements
WHERE
sku LIKE 'ISCE%'
AND settlement_id LIKE '7072432852'
GROUP BY sku
HAVING sku IS NOT NULL AND LENGTH(sku) > 0
ORDER BY sku
它显示正常
我对PHP页面使用相同的功能
$output = '';
if (isset($_POST["query"])) {
$search = mysqli_real_escape_string($conn, $_POST["query"]);
$queryskulist = "
SELECT
settlement_id,
sku,
FROM settlements
WHERE sku LIKE '%" . $search . "%' and settlement_id LIKE '%" . $search . "%'
GROUP BY sku
HAVING sku IS NOT NULL AND LENGTH(sku) > 0
ORDER BY sku
";
} else {
$queryskulist = "
SELECT
settlement_id,
sku,
FROM settlements
GROUP BY sku
HAVING sku IS NOT NULL AND LENGTH(sku) > 0
ORDER BY sku ";
}
你可以看到
WHERE sku LIKE '%" . $search . "%' and settlement_id LIKE '%" . $search . "%'
这是我收到错误的地方,因为我只能从这样的一个函数中获取数据
WHERE sku LIKE '%" . $search . "%'
但是我无法获得两个不同的搜索结果,我应该使用两个不同的查询$ _POST [“query”]吗?
任何建议都会很棒,或者示例/示例演示PHP网站会很棒,它会帮助我了解它。
答案 0 :(得分:2)
确实你没有使用聚合功能
SELECT
settlement_id
, sku
FROM settlements
WHERE sku LIKE 'ISCE%'
AND settlement_id LIKE '7072432852'
WHERE sku IS NOT NULL AND LENGTH(sku) > 0
ORDER BY sku
在SQL中不推荐使用group by without aggreagtion函数..并且不允许使用最新版本的mysql ..(默认情况下)
使用group by without aggregation函数可以获得不可预测的结果
答案 1 :(得分:2)
您可以使用以下
解决此问题SELECT
settlement_id,
sku
FROM
settlements
WHERE
(CONCAT(sku, settlement_id) LIKE '%" . $search . "%')
AND
sku IS NOT NULL AND LENGTH(sku) > 0
ORDER BY
sku
或者你应该能够用括号括起来
WHERE (sku LIKE '%" . $search . "%') OR (settlement_id LIKE '%" . $search . "%')
答案 2 :(得分:0)
感谢您的更新,我已经解决了这个问题,因为我决定删除' Sku'并保留其余部分,所以这就是发生的事情。
' Settlement_id'在PHP页面上使用选项下拉值,它们从MySQL和' SKU'中提取数据。搜索框正在输入框中使用。并且输入框使用Javascript Ajax过滤器来获取它显示的结果来自' Settlement_Id'数据