2012-02-29 3 views
0

기본적으로 두 열이 포함 된 제품 테이블 (주로 옷)에 새 열을 추가하고 싶습니다. - ProductID (int) - path (varchar)와 비슷합니다. x | y | z | (예 : | 10 | 300 | 5 | 10은 제품이 여성 천, 300은 티셔츠, 5는 노란색임을 나타냄).특정 인덱스 만들기

그래서 각 웹 사이트에 각 제품의 특정 위치를 할당하기 위해 index라는 새로운 열을 추가하고 싶습니다 (예 : 첫 번째 그림은 진, 두 번째 그림은 코트, 3 번째는 t- 셔츠, 등 ...). 나는이 구역을 8 개까지 확장 할 수있는 8 구역을 가지고있다.

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. 

어떤 제안 :

나는 이와 같은 SQL 업데이트 기능을 쓰기 위해 노력하고 있어요?

+1

테이블을 표준화하십시오. 하나의 필드에 여러 값이 저장되어있어 아무 가치도 없습니다. 가치와 시간과 노력 만 잃어 버렸습니다. [데이터베이스 정규화] (http://en.wikipedia.org/wiki/Database_normalization)에 대해 읽어보십시오. –

답변

0

예 구문 : 나는 indexproducts 열에서 일 것입니다 무슨에 당신의 논리를 이해하지, 그런데 왜 계산 된 열 만들지 않은

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

:

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

는 다음 인덱스를 생성 할 수 있습니다 indexproducts 열에

관련 문제