코드 또는 데이터베이스 구조를 제공하지 않았으므로 기본 주문 시스템을 설명하려고합니다. 어떻게 해결할 수 있었으면 좋겠습니까? 너의 문제.
- root (id:0)
|
|___ abc (id:1)
| |___ 123 (id:3)
| |___ 789 (id:5)
| |___ 456 (id:4)
|
|___ xyz (id:2)
:이 같은 나무가 줄
SELECT ... ORDER BY order, id ASC
:이 같은 쿼리를 한 경우
id - parent - title - order
1 - 0 - abc - 1
2 - 0 - xyz - 2
3 - 1 - 123 - 1
4 - 1 - 456 - 3
5 - 1 - 789 - 2
:
이 당신의 데이터가 MySQL의 테이블에있는 상상
789
(id : 5) 항목을 클릭하면 항목이보다 높은 순서로 표시됩니다, 당신의 SQL 쿼리는 다음과 같이해야한다 :
UPDATE table SET order = order + 1 WHERE order = order - 1 AND parent = 1
다음 질의 :
- root (id:0)
|
|___ abc (id:1)
| |___ 789 (id:5)
| |___ 123 (id:3)
| |___ 456 (id:4)
|
|___ xyz (id:2)
당신이 더 필요한 경우 :
가
UPDATE table SET order = order - 1 WHERE id = 5
귀하의 트리가 다음과 같은 것을해야한다 유연한 방법으로 다음과 같이 사용할 수도 있습니다.
(여기에 100 개의 열이 있다고 가정합니다. ord ID 다음 장소에 33 : 1에서 100까지 겹으로, 당신은 ID를 이동하려는 51)
UPDATE table SET order = order + 1 WHERE order >= 51
UPDATE table SET order = 51 WHERE id = 33
UPDATE table SET order = order - 1 WHERE order BETWEEN 33 AND 50
안녕 마흐디, 감사는 응답을, 내가 그것을 밖으로 시도하고 회신하자 .. – shijin
@shijin 환영! 그것이 당신을 위해 일하지 않는 경우에 더 많은 세부 사항을 제공하는 것이 좋습니다 ... :) – Mahdi