2012-02-29 50 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列上