2010-04-13 4 views
0

막연한 질문 제목에 대해 죄송합니다.주문 열의 초기 채우기에 대한 MySQL 쿼리

다른 카테고리에 속하는 거대한 제품 목록이 들어있는 테이블이 있습니다. 특정 제품이 속한 카테고리를 나타내는 외래 키 열이 있습니다. 나는. "바나나"행 범주에서 "과일"을 나타내는 3 일 수 있습니다.

이제 해당 특정 범주 내에서 표시 순서를 나타내는 추가 "열"열을 추가했습니다. 초기 주문이 필요합니다. 목록이 크기 때문에 모든 행을 손으로 바꾸고 싶지 않습니다. 하나 또는 두 개의 쿼리로 할 수 있습니까? 처음 주문이 1로 시작하고 올라간다면 어떤 초기 주문인지는 신경 쓰지 않습니다.

ID가 1에서부터 제품 범주 및 순서에 상관없이 1부터 모든 다른 카테고리에 대해 새로 시작해야하기 때문에 SET 주문 = id와 같은 작업을 수행 할 수 없습니다.

달성해야 할 것의 예 :

ID | 제품 | 카테고리 | 주문

1 | 바나나 | 과일 | 1

2 | 의자 | 가구 | 1

3 | 사과 | 과일 | 2

4 | 콜라 | 음료 | 1

5 | 망고 | 과일 | 3

6 | 펩시 | 음료 | 2

은 보시다시피

를 (이 외래 키이기 때문에 그냥 설명을 위해 이름을 넣어 예를 들어 카테고리가 실제로 번호), 주문 번호는 각각의 서로 다른 카테고리에 대해 1 일부터 새롭게 시작합니다.

+0

기본 키가 숫자 일 수도 있고 1부터 시작하는 키가 있으면 새 열에 복사 할 수 있습니까? –

+0

나는 모든 카테고리가 자신의 주문을 가지기 때문에 나는 order = id (id는 auto_increment pk)를 할 수 없다고 말했다. 아니면 잘못된 접근 방식입니까? – Sejanus

답변

0

카테고리를 주문한 이유는 무엇입니까? 즉 왜 안입니다 :

update Table 
set SortOrder = Category; 

여담으로, 당신은 order라는 이름의 열을 가질 수 없습니다 - 그 SQL에서 예약 된 단어입니다.

+0

그런 경우 카테고리 내의 모든 제품은 카테고리의 번호 (즉, 목적에 맞지 않는 번호)로 설정된 주문을 갖게됩니다. 원래 질문을 편집하고 예제를 추가했습니다. – Sejanus

+0

원래 게시물에 동일한 카테고리의 모든 항목에 동일한 정렬 순서가 있어야한다고 생각했습니다. 오해 한 것 같습니다. – MJB