【发布时间】:2011-12-23 15:47:30
【问题描述】:
我有第一个表注册,该表包含:
uid (int)
email (varchar)
telephone (varchar)
看起来像这样
++++++++++++++++++++++++++++++++++++++++++++++++
+ uid + email + telephone +
++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 + david@gmail.com + 333-111-5555 +
++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 + erick@gmail.com + 333-222-5555 +
++++++++++++++++++++++++++++++++++++++++++++++++
+ 3 + james@gmail.com + 333-333-5555 +
++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 + svene@gmail.com + 333-444-5555 +
++++++++++++++++++++++++++++++++++++++++++++++++
+ 5 + simon@gmail.com + 333-555-5555 +
++++++++++++++++++++++++++++++++++++++++++++++++
+ 6 + peter@gmail.com + 333-666-5555 +
++++++++++++++++++++++++++++++++++++++++++++++++
+ 7 + mikka@gmail.com + 333-777-5555 +
++++++++++++++++++++++++++++++++++++++++++++++++
我有第二张表referrers,该表包含以下列:
id (int)
uid0 (int)
uid1 (int)
第二个表保存自增的id,然后uid0是父用户id,uid1是referer的用户id
例如可以有这些值
+++++++++++++++++++++++
+ id + uid0 + uid1 +
+++++++++++++++++++++++
+ 1 + 2 + 3 +
+++++++++++++++++++++++
+ 2 + 2 + 5 +
+++++++++++++++++++++++
我知道如何从 foreach 循环中的 registered 表中回显所有已注册的电子邮件和电话。
但是,我还需要加入并回显属于某个用户 (uid0) 的所有推荐人 (uid1) 电子邮件。
+++++++++++++++++++++++
+ id + uid0 + uid1 +
+++++++++++++++++++++++
+ 1 + 2 + 3 +
+++++++++++++++++++++++
+ 2 + 2 + 5 +
+++++++++++++++++++++++
+ 3 + 4 + 1 +
+++++++++++++++++++++++
+ 4 + 4 + 6 +
+++++++++++++++++++++++
+ 5 + 4 + 7 +
+++++++++++++++++++++++
所以,最终的回显结果将如下所示:
email telephone referers
erick@gmail.com 333-222-5555 james@gmail.com, simon@gmail.com
svene@gmail.com 333-444-5555 david@gmail.com, peter@gmail.com, mikka@gmail.com
如何执行这个“线程化”foreach 循环?
提前致谢。
【问题讨论】:
-
只是几个风格点:虽然我不知道您的确切用例,但我想用户 X 将用户 Y 推荐给您的服务。所以,在命名方面,“referrer_from”和“referrer_to”怎么样 - 您代码库的后续开发人员会感谢您!此外,如果您将这两列设为复合主键(假设 from+to 是唯一的),那么您可以将 id 列删除到第二个表中。