簡體   English   中英

僅使用COUNT函數計算SQL中的搜索結果

[英]Counting only search result in SQL with COUNT function

我有一個產品表,現在我想計算用戶搜索項目時的總結果,而不計算產品表中的總項目。

示例

假設我在產品表中有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 SQL_CALC_FOUND_ROWS . . . SELECT FOUND_ROWS() (見這里 )。 這是更典型的分頁方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM