2017-02-28 51 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