【问题标题】:looping or round robin assignment in phpphp中的循环或循环分配
【发布时间】:2012-12-25 14:12:28
【问题描述】:

我有一个客户和员工表:

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

我一直在尝试使用通常的循环,但结果是随机的,并不理想。

各位,有什么想法吗?

【问题讨论】:

  • 循环分配的算法是什么?通常,这指的是 1、2、3、1、2、3 等。
  • @GordonLinoff 这就是为什么,我只是认为循环法可能可以做一个我想要的例子。没有?

标签: php


【解决方案1】:

您可以创建一个数组并覆盖前一个键来创建它,以便每个邮政编码只加载最后一个 id_e 以拥有它,例如:

如果您使用 $myarray = array(); 创建一个数组 在您的查询中,当您将数据库中的值导入数组时...我会给您代码,但我看不到您是如何导入它的;如果您表明我可以帮助您针对这种情况正确格式化它。

然后,您可以在此处覆盖重复的邮政编码情况,并仅使用具有相同邮政编码的最后一个 id_e。 foreach($myarray as $zipcode => $id_e){ $myarray[$zipcode] = $id_e; }

我还假设您目前是,但请确保您的 mysql 查询在其末尾包含“ORDER BY id_e”。

【讨论】:

  • 你的意思是查询吗?我尝试: $query = "SELECT A.account_no, A.zipcode, B.id_e FROM Customers A, Employees B WHERE A.zipcode BETWEEN B.zipcode_a AND B.zipcode_b ORDER BY card_id"; $result = mysql_query($query); $data = mysql_fetch_array($result, MYSQL_ASSOC){ $acc = $data['account_no]; $zip = $data['zipcode']; $id = $data['id_e']; $query = "插入临时值 ('$acc','$zip','$id')"; $result = mysql_query($query); } 我做了一张临时表来插入所有的值。
  • 对不起,我编辑了id_e,结果来自“ORDER BY card_id”。
  • @user1986:查询是您如何使用 PHP/MySQL 从数据库中获取数据。例如:$my_query = mysql_query("SELECT * FROM my_table WHERE some_column=somevalue SORT BY some_other_column ASC");本指南可以帮助w3schools.com/sql/sql_select.asp
  • @user1986:假设你不知道我所说的查询是什么意思;你所说的“表”到底是什么意思......你是说你在托管在 MySQL 等某个地方的数据库中制作的数据表......还是像
    My table 这样的 html 表td>
    ?
  • 哦,这里的表意思是来自数据库,不是html表。
猜你喜欢
  • 2011-10-22
  • 1970-01-01
  • 1970-01-01
  • 2011-11-21
  • 2012-02-26
  • 2019-03-12
  • 2021-07-12
  • 2017-05-28
  • 2011-11-19
相关资源
最近更新 更多