2011-01-08 18 views
1

各エージェントが100人の顧客を扱う顧客/代理店の関係を作成しなければならず、各顧客は注文/位置/優先度を処理する必要があります。そして、私が顧客の注文/位置/優先度を別の優先順位に更新するとき。mysqlクエリのヘルプ

たとえば、5から25の場合、すでに顧客が占有していたポジションは24ステップダウンする必要があります。したがって、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です。誰もがこの2つのクエリを1つの更新クエリに結合する方法を知っていますか? – Elamurugan

0

このような機能はありますか?

UPDATE顧客SETポジション1ポジション> $ position_open

+0

これは、顧客をキューから外して、$ position_openが顧客が占有していた位置です。顧客をキュー内の別のポジションに移動させる場合、Mchlのソリューションはよりよく見えます。 – arlomedia