Group
이라는 테이블과 Entry
이라는 테이블이있는 문제가 있습니다. Group
테이블에는 기본 키 Id
이 있습니다. Entry
테이블에는 기본 키 Id
이 있고 Group
테이블의 Id
에 대한 외래 키는 GroupId
입니다. Entry
테이블에는 또 하나의 열 Weight
이 있습니다. 이 Weight
은 정수이며 모두 맨 위에 0이 표시된 정렬 가중치를 말해줍니다.그룹화 된 시리즈의 각 요소에 증분 값을 어떻게 추가 할 수 있습니까?
기본적으로 데이터베이스 설계시 누군가가 Weight
필드를 Null 허용으로 설정했습니다. 이제는 을 UNIQUE
제약 조건에 맞게 조정해야합니다 (UNQIUE(GroupId, Weight)
을 Entry
테이블에 추가). 이렇게하면 두 개의 Entry
항목이 기본적으로 동일한 그룹에 속할 때 동일한 정렬 가중치를 갖지 않습니다.
어떤 쿼리 나 기존 데이터를 모두 통과 단순히 N은 Group
에서 Entry
항목의 수는 N 0에서 그룹별로 그룹에있는 각 항목에 Weight
열 번호를 할 것인가? 주어진 Group
에서 Entry
에 대한 가장 낮은 Id
이 가장 낮은 Weight
이되도록 의 Id
을 기반으로 가중치를 설정하고 싶습니다.
Group
테이블을 통과하는 하나의 큰 '쿼리를 원한다면, Entry
개의 항목을 모두 합친 다음 반복하여 순서를 지정하십시오. 그러나, 나는 그걸 어디에서 시작해야할지 전혀 모른다.
[ROW_NUMBER (http://msdn.microsoft.com/en-us/library/ms186734.aspx) - SQL 서버 2005 + –