2012-02-29 55 views
0

基本上我想添加一個名爲產品(主要是衣服),其中包含2列表中的新列: - ProductID(int) - path(varchar)它是什麼| x | y | Z | (例如| 10 | 300 | 5 | 10表示該產品是女士布,300件T恤和5件黃色)。創建一個特定的索引

因此,我想添加一個名爲index的新colum,以便在我的網站中爲每個產品分配一個特定的位置(例如,第一張照片是牛仔褲,第二張是外套,第三張是t恤,襯衫等)。我有8個區域,可以將此區域擴展到8個區域,依此類推。

我想寫這樣一個像這樣的SQL更新功能:

UPDATE productsTable 
SET indexproducts = 
SELECT CASE path WHEN path LIKE %|1 for example|% 
THEN my index (this index should indicate that the product can be included in the first zone or the 9th zone etc... of my website) 
ELSE WHEN path LIKE %|200 for example|% 
THEN my index (for the second zone) ELSE etc?... 
END 
FROM productsTable. 

有什麼建議?

+1

標準化您的表格。通過在一個字段中存儲多個值,絕對不會增加任何值。只有價值 - 時間和精力 - 失去了。閱讀[數據庫規範化](http://en.wikipedia.org/wiki/Database_normalization) – 2012-02-29 11:24:22

回答

0

示例語法:

update YourTable 
set  idx = 
     case 
     when path like '%least travelled%' then 1 
     when path like '%highway%' then 2 
     else 3 
     end 
0

我不明白什麼是在indexproducts列你的邏輯,但爲什麼不創建一個計算列:

alter table productsTable add indexproducts as 
    case path 
     when '1' then 'include on the first zone' 
     when '200' then 'second zone' 
     else '...' 
    end 

,那麼你可以創建一個索引在indexproduct列上