繁体   English   中英

由于列没有直接连接,如何用名称替换 ID 号? (PHP/MySQL)

[英]How do you replace id numbers with names since the columns aren't joined directly? (PHP/MySQL)

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

TABLE 客户端有两列:“id”和“name”。
TABLE 引用也有两列:“id”和“referred_by”

两个“id”列都是PRIMARY_KEYAUTO_INCREMENTNOT_NULL

TABLE 客户端有三行:

1 | Jack  
2 | Frank  
3 | Hank  

TABLE 引用也有三行:

1 | 0  
2 | 1  
3 | 2  

意思是,杰克是客户 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>";
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM