我有第一个表注册并且这个表包含:
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 循环?
提前致谢。
最佳答案
您可以尝试使用 group concat; 进行子选择
类似于:
select r.email, r.telephone from registered as r,
(SELECT
GROUP_CONCAT(r.email)
FROM registered
GROUP uid1 where uid0 = r.uid)
关于php - 如何使这个简单的MySQL连接选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8037420/