0

Customers テーブルと Employees テーブルがあります。

Customers
    .account_no
    .zipcode
-----------------------
account_no  |  zipcode
-----------------------
1111000100  |  12345
1222000100  |  25678
1333000100  |  47890
1444000100  |  50000
1555000100  |  53456
1666000100  |  63987

Employees
    .id_e
    .zipcode_a
    .zipcode_b
    .card_id
---------------------------------------------
id_e  |  zipcode_a  |  zipcode_b  |  card_id
---------------------------------------------
1     |   10000     |   64000     |  1011
2     |   10000     |   54000     |  1002
3     |   50000     |   64000     |  1003

顧客が 6 人、従業員が 3 人いるとします。クエリ結果は次のようになります。

---------------------------------
account_no  |  zipcode  |   id_e
---------------------------------
1111000100  |    12345  |     2
1111000100  |    12345  |     1
1222000100  |    25678  |     2
1222000100  |    25678  |     1
1333000100  |    47890  |     2
1333000100  |    47890  |     1
1444000100  |    50000  |     2
1444000100  |    50000  |     3
1444000100  |    50000  |     1
1555000100  |    53456  |     2
1555000100  |    53456  |     3
1666000100  |    63987  |     3
1666000100  |    63987  |     1

これらの顧客アカウントをループまたはラウンドロビンで各従業員に割り当てて、次のようにします。

---------------------------------
account_no  |  zipcode  |   id_e
---------------------------------
1111000100  |    12345  |     2
1222000100  |    25678  |     1
1333000100  |    47890  |     2
1444000100  |    50000  |     1
1555000100  |    53456  |     3
1666000100  |    63987  |     1

通常のループを使用してみましたが、結果はランダムで望ましくありません。

アイデアはありますか?

4

1 に答える 1

0

配列を作成し、前のキーをオーバーライドして、すべての郵便番号が最後のid_eをロードしてそれを取得できるようにすることができます。たとえば、次のようになります。

$ myarray = array();で配列を作成する場合 データベースから配列に値をインポートするときのクエリで...そのためのコードを提供しますが、どのようにインポートしているかわかりません。あなたが私があなたがこの場合のためにそれを適切にフォーマットするのを手伝うことができることを示すならば。

次に、これは、郵便番号の重複するケースをオーバーライドし、同じ郵便番号で最後のid_eのみを取得する場所です。foreach($ myarray as $ zipcode => $ id_e){$ myarray [$ zipcode] = $ id_e; }

また、あなたは現在そうだと思いますが、mysqlクエリの最後に「ORDERBYid_e」が含まれていることを確認してください。

于 2013-01-11T02:29:59.240 に答える