Mysql 如何使用SQL内部联接打印出名称而不是ID
事实上,我不知道如何才能做到这一点,因为这是我第一次不得不这样做。我的数据库中有两个表Mysql 如何使用SQL内部联接打印出名称而不是ID,mysql,sql,join,Mysql,Sql,Join,事实上,我不知道如何才能做到这一点,因为这是我第一次不得不这样做。我的数据库中有两个表 Table 1 users Table 2 Transfer History. 这是我的密码: SELECT u.id , u.fname , u.lname , t.sender_id , t.beneficiary_id , t.amount , t.date_posted from transfers t JOIN users u
Table 1 users
Table 2 Transfer History.
这是我的密码:
SELECT u.id
, u.fname
, u.lname
, t.sender_id
, t.beneficiary_id
, t.amount
, t.date_posted
from transfers t
JOIN users u
ON u.id = t.sender_id
WHERE u.id = '".$id."'
ORDER
BY t.date_posted DESC
我使用
<?php $i = 1; while($row = ): ?>
<tr>
<td><?= $i++ ?></td>
<td><?= $row['sender'] ?></td>
<td><?= $row['sender'] ?></td>
<td><?= $i++ ?></td>
<td><?= $i++ ?></td>
</tr>
<?php endwhile ?>
我不想回显受益人id,而是想回显用户数据库中的受益人名称。并非所有人都知道,对于数据库,没有规则规定只能将表加入查询一次。看起来您需要两次加入用户,一次用于发送付款的人,一次用于接收付款的人:
SELECT
su.fname as sender_fname,
su.lname as sender_lname,
bu.fname as beneficiary_fname,
bu.lname as beneficiary_lname,
t.sender_id,
t.beneficiary_id,
t.amount,
t.date_posted
FROM
transfers t
JOIN users su ON su.id = t.sender_id
JOIN users bu ON bu.id = t.beneficiary_id
WHERE su.id = '".$id."'
ORDER BY t.date_posted DESC
您的查询结果集现在包含发送方和接收方的名称,它们的别名不同,因此您可以使用别名在php中引用其中一个
需要注意的是,您不能只提及用户表一次,而使用OR(您不能在u.id=t.sender\u id或u.id=t.Recipient\u id上说
),因为这将导致行数ro增加-每次传输将获得两行。为了便于参考“此付款由此人发送给此人”,您希望增加列数,而不是行数。对于100笔付款,您需要的结果集是“100行两列;a from和a to“you don want”200行一列,包含from和to,在不同的行上”您确定give php命令打印出受益人id吗?因为代码没有显示。请参阅。另外,请参阅关于sql注入以及准备好的和绑定的查询的重要性。