php - 由于列不是直接连接的,如何用名称替换 ID 号? (PHP/MySQL)

标签 php mysql select join relational-database

假设您有一个数据库,其中包含两个名为“clients”和“referrals”的表。

TABLE clients 有两列:“id”和“name”。
TABLE referrals 也有两列:“id”和“referred_by”

两个“id”列都是PRIMARY_KEYAUTO_INCREMENTNOT_NULL

TABLE clients 有三行:

1 | Jack  
2 | Frank  
3 | Hank  

TABLE referrals 也有三行:

1 | 0  
2 | 1  
3 | 2  

意思是,Jack 是客户 1,没有人推荐; Frank 是客户 2,由 Jack 推荐; Hank 是 Frank 推荐的客户 3。

我用来显示上面意思的SELECT命令是:

mysql_query("SELECT clients.id, clients.name, referrals.referred_by FROM clients INNER JOIN referrals ON clients.id=referrals.id");

while ($row = mysql_fetch_array($result))
{
    echo $row['id'] . " " . $row['name'] . " " . $row['referred_by'] . "<br>";
}

哪些输出:

1 Jack 0  
2 Frank 1  
3 Hank 2  

现在真正的问题是:

我应该如何修改代码以使其输出引荐来源网址的名称而不是其 ID?

意思是,它应该是这样的:

1 Jack  
2 Frank Jack  
3 Hank Frank

提前致谢~

编辑:确保提及我应该如何更新数组,因为我不知道应该如何更新整个回显行。

最佳答案

您就快完成了 - 您只需要第二次加入客户表以获取引荐来源名称:

mysql_query("SELECT clients.id, clients.name, rclients.name as referred_by
FROM clients 
INNER JOIN referrals ON clients.id=referrals.id
LEFT JOIN clients as rclients ON referrals.referred_by = rclients.id");

while ($row = mysql_fetch_array($result))
{
    echo $row['id'] . " " . $row['name'] . " " . $row['referred_by'] . "<br>";
}

关于php - 由于列不是直接连接的,如何用名称替换 ID 号? (PHP/MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7048631/

相关文章:

php - cakePHP isAuthorized 不工作

php - PHP 服务器设置中的什么会导致 $_REQUEST 为空?

php - 去除 HTML 和特殊字符

mysql - MariaDB 中不存在 REGEXP_REPLACE 函数

mysql - 如何重写此 SELECT 查询

javascript - 从组合框和文本输入字段将值分配给另一个组合框

php - FireFox 和 IE Jquery 不工作

mysql - API请求后 Node 服务器不返回任何响应

php - $_POST 未知数量的元素

Python:元组/字典作为键、选择、排序