gpt4 book ai didi

php - 使用 COUNT 函数仅计算 SQL 中的搜索结果

转载 作者:可可西里 更新时间:2023-11-01 08:58:37 25 4
gpt4 key购买 nike

我有一个产品表,现在我想在用户搜索某个项目时计算总结果,而不是计算产品表中的总项目数。

示例:

假设我在产品表中有 4 行,我进行了一个 SQL 查询来匹配产品标题字段、描述字段和项目编号字段:如果搜索返回 2 行,我如何计算这个结果以便我可以将它用于分页目的?

下面是我正在使用的 sql 查询:

$titleSQL[]  = "if (title LIKE $key,$scoreTitleKeyword,0)";
$descSQL[] = "if (description LIKE $key,$scoreDescriptionKeyword,0)";
$ItenNoSQL[] = "if (item_number = $nowildcardKey,$scoreItemNumberKeyword,0)";

$sql = "SELECT
p.product_id,
p.title,
p.price,
p.unit_sold,
p.slug,
p.discount,
p.free_shipping,
free_return,
p.profile_img,
p.store_name,
p.item_number,
(
(-- Title score ".implode(" + ", $titleSQL).")+
(-- description ".implode(" + ", $descSQL).")+
(-- item number ".implode(" + ", $ItenNoSQL).")+
(-- category id ".implode(" + ", $catIdSQL).")
) as relevance
FROM products p
WHERE p.is_active = '1'".$sortpriceHighLow."
HAVING relevance > 0
ORDER BY ".$orderBy." relevance DESC
LIMIT 10";

如果用户搜索从结果查询中返回 2 行,我想使用 COUNT 函数,这样我可以获得 2 行,但我看不到它的工作...

我试过了:

$sql = "SELECT COUNT(*),
(
(-- Title score ".implode(" + ", $titleSQL).")+
(-- description ".implode(" + ", $descSQL).")+
(-- item number ".implode(" + ", $ItenNoSQL).")+
(-- category id ".implode(" + ", $catIdSQL).")
)
FROM products p
WHERE p.is_active > '1'";

但数据库中的所有查询都被选中,而不是根据搜索结果

最佳答案

你似乎想要:

SELECT COUNT(*),
FROM products p
WHERE p.is_active > '1' AND
(
(-- Title score ".implode(" + ", $titleSQL).")+
(-- description ".implode(" + ", $descSQL).")+
(-- item number ".implode(" + ", $ItenNoSQL).")+
(-- category id ".implode(" + ", $catIdSQL).")
) > 0;

但是,您可能只需要 SELECT SQL_CALC_FOUND_ROWS 。 . .SELECT FOUND_ROWS()(参见 here)。这是更典型的分页方法。

关于php - 使用 COUNT 函数仅计算 SQL 中的搜索结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51307834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com