2017-02-28 72 views
0

我有一個搜索欄和一個從我的sql服務器數據庫填充的HTML表。無論何時搜索,它都會使用LIKE命令SKUSKU Description來過濾表。當顯示結果時,我希望它根據最匹配SKU列的結果來篩選結果。基於搜索結果篩選特定列

例如,如果我搜索"100",它將顯示位於SKUSKU Description列中的結果。但是,我希望它進行過濾,以便SKU列中匹配的值被過濾,以便在SKU Description列中匹配的值之前先看到。

我認爲這只是添加一些東西到我的查詢,但我該怎麼做?

這裏是我的查詢:

$query = "SELECT Product_ID, [Major Category], [Minor Category], [Product Report Code], SKU, [SKU Description], [SKU Status], CAST([Create Date] AS DATE) AS Date, Group_ID, [SKU Group] 
      FROM vProducts 
      WHERE CONCAT(SKU, [SKU Description]) 
      LIKE '%".$valueToSearch."%'"; 
+0

您是否需要來自兩列的匹配,或者您是否只需要SKU即使匹配存在於SKU說明中? –

+0

我需要來自所有專欄的匹配...我很確定@manderson的答案對我有用! – Rataiczak24

回答

1

這可能是矯枉過正,你就會有這種格式化你的「$查詢」。這是sql。

SELECT A.Product_ID, A.[Major Category], A.[Minor Category], A.[Product Report Code], A.SKU, A.[SKU Description], A.[SKU Status], A.Date, A.Group_ID, A.[SKU Group], A.Sort 
FROM (
     SELECT Product_ID, [Major Category], [Minor Category], [Product Report Code], SKU, [SKU Description], [SKU Status], CAST([Create Date] AS DATE) AS Date, Group_ID, [SKU Group], 1 AS Sort 
     FROM vProducts 
     WHERE SKU LIKE '%' + @value + '%' 

     UNION all 

     SELECT Product_ID, [Major Category], [Minor Category], [Product Report Code], SKU, [SKU Description], [SKU Status], CAST([Create Date] AS DATE) AS Date, Group_ID, [SKU Group], 2 AS Sort 
     FROM vProducts 
     WHERE [SKU Description] LIKE '%' + @value + '%' 
    ) A 
ORDER BY A.Sort 
+0

很確定這個工程!我只是將'+'換掉了一段時間('.'),並將'@ value'改爲了我的php變量 – Rataiczak24