2011-01-08 5 views
1

각 상담원이 고객 100 명을 처리 할 수있는 고객/상담원 관계를 만들어야하며 각 고객은 주문/위치/우선 순위을 처리해야합니다. 그리고 고객의 주문/위치/우선 순위을 다른 우선 순위로 업데이트합니다.MySQL 쿼리 도움말

예를 들어 5에서 25까지의 고객은 이미 고객이 한 단계 아래로 내려 가야하므로 24 일에서 23 일까지 6 번째 고객이 5 위로 올라갈 것입니다.

그래서 어쨌든 사용자 지정 SQL 쿼리 또는 PHP 스크립트 (For 루프 할 수 있지만 가능한 경우 다른 원하는))이 상황을 처리 할 수 ​​있습니다.

답변

2
UPDATE yourTable SET priority = priority + 1 WHERE priority >= 24 
UPDATE yourTable SET priority = 24 WHERE priority = 5 
UPDATE yourTable SET priority = priority - 1 WHERE priority > 5 

트랜잭션 내에서 수행되어야합니다.

+0

우수하고 신속한 답변입니다. 답변 주셔서 감사합니다 Mchl. – Elamurugan

+0

또한 이렇게 할 수 있습니다. \t 업데이트 customer_agent 설정 위치 = 위치 -1 위치 <= $ targetValue 및 위치> $ currentValue \t 업데이트 customer_agent 설정 위치 = $ targetValue 여기서 위치 = $ currentValue. 아무도이 두 쿼리를 하나의 업데이트 쿼리로 결합하는 방법을 알고 있습니까? – Elamurugan

0

이 것이 좋겠습니까?

고객 위치 업데이트 위치 = 1 위치> $ position_open

+0

대기열에서 고객을 빼내고 $ position_open이 고객이 점유했던 위치라면이 방법이 유용 할 것입니다. 고객이 대기열의 다른 위치로 이동하는 경우 Mchl의 솔루션이 더 좋아 보입니다. – arlomedia