나는 & ParentID 열이 포함 된 categories
테이블을 가지고 있습니다. Level이라는 필드를 추가하고 싶습니다.이 필드는 각 카테고리 트리의 어느 레벨에 속하는지 나타냅니다. 내 솔루션을 찾은 것 같지만 그것은 MySQL이 아니라 mysql입니다. 그래서 올바른 구문으로 변환되었습니다. 그러나 나는 메신저가 한 발짝도 빠뜨린 것 같아. 그래서, 여기 내 코드입니다 : 나는 문제가 내 DB에있는 범주의 순서는 어떤 특정 순서로 제공되지 않습니다 있다는 사실에 거짓말 같아요MySQL Order by, Update Inner Join
ALTER TABLE categories DROP Level;
ALTER TABLE categories ADD Level INT NULL;
UPDATE categories
SET Level = 0
WHERE ParentID IS NULL;
UPDATE categories AS A
INNER JOIN categories B ON A.ParentID = B.ID
SET A.Level = B.Level + 1
WHERE A.Level IS NULL AND
B.Level IS NOT NULL;
다음과 같이 내가 무슨 뜻입니다 :
ID ParentID
2 NULL 0
4 55
7 2
.....more categories
55 2
그래서 내가 그것을 어떻게 할 싶은 것입니다 그러나
ID Parent Level
2 NULL 0
3 55 2
7 2 1
....
55 2 1
, 나는 생각하지만, 내가 잘못 될 수도, 내가 필요로한다는 것입니다 중 내가 마지막 작업을 수행하기 전에 먼저 ParentID에 의해 순서, 또는에 내 쿼리가 잘못 작성되었습니다.
그러나 나는 어떤 오류도 얻지 못하고 있지만 결과를 얻지는 못한다. 나는 이것이 무엇을 얻고 있는지 기대하고있다.
ID Parent Level
2 NULL 0
3 55 NULL
7 2 1
....
55 2 1
아이디어가 있으십니까?
나는 완벽하게 작동한다고 생각한다. 쿼리를 다시 실행하면 어떻게됩니까? 부모 레벨이 알려지면 레코드 만 업데이트됩니다. 레벨을 가졌을 때이 쿼리를 여러 번 실행해야 할 수도 있습니다. 예를 들어, 3 번 실행 한 후 레코드 # 3이 업데이트 되었습니까? – AgRizzo
얼마나 간단합니다. 나는 단지 한 번 더 실행해야한다고 생각하지만, 마지막 부분 대신에 전체 스크립트를 다시 실행하기 전에 생각합니다. – user2231688