php - 如何使这个简单的MySQL连接选择?

标签 php mysql

我有第一个表注册并且这个表包含:

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/

相关文章:

php - where 子句中的 Codeigniter 列 'idimport_database' 不明确

php - 有没有办法为每个虚拟主机设置不同的 PHP 模块?

javascript - 将 HTTPS 值发送到浏览器的 PHP 脚本

javascript - 如何获取选中的单选按钮的值和剩余的 td 但不包括未选中的单选按钮(在 tr 中)

Php set_time_limit 抛出 500 错误?

php - 为 Windows 上的初学者 PHP 程序员推荐的工具?

mysql - 比较两个可能重复的 MySQL 列

java - 内存不足错误 : Java Heap Space - PreparedStatement MySQL

mysql - 使用 Ruby 拆分 MySQL 查询的行并写入 CSV 文件

php - Symfony2 和 Azure 网站的性能问题