Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何使用SQL内部联接打印出名称而不是ID_Mysql_Sql_Join - Fatal编程技术网

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注入以及准备好的和绑定的查询的重要性。