如何显示来自表B的信息,其中表A中的字段具有例如列中的数字2345678。我希望只有这个数字的所有列出现

时间:2017-09-26 14:12:47

标签: php mysql

我有表'A',它有ID,Name,gender,account_number。表B有ID,Name,gender,account_number等。表B存储有关不同帐户用户和号码的所有信息。我希望如果表A中的一行与account_number(例如123456)在一行中匹配表B与相同的account_number然后打印表B中的所有信息。

我尝试过这样做,但它无法正常工作.........

<? php

require_once 'dbconfig.php';

    $stmt = $db_con->prepare("SELECT * FROM trans INNER JOIN reg ON reg.Accnumber = trans.Transfer_id ");
    $stmt->execute();
    while($row=$stmt->fetch(PDO::FETCH_ASSOC))
    {
        ?>
        <tr>
        <td height="38"><?php echo $row['re_name']; ?></td>
        <td><?php echo $row['Bank_name']; ?></td>
        <td><?php echo $row['re_number']; ?></td>
        <td>$<?php echo $row['re_amount']; ?></td>
        <td><?php echo $row['swift_code']; ?></td>
        <td><?php echo $row['t_date']; ?></td>
        <td align="center">
          <?php

我需要帮助

1 个答案:

答案 0 :(得分:0)

你的意思是左联? 选择表A中的所有值,然后只有在表A中才能从表B中获取数据?

SELECT a.*, b.*
FROM a
LEFT JOIN b USING(account_number)

请注意,第一个表应该是数据量较少的表。 如果你有一个小的交易清单,并且你想获得账户持有人的详细信息,那就是:

SELECT * 
FROM trans 
LEFT JOIN reg ON reg.accnumber = trans.accnumber
WHERE reg.accnumber = '123456'

如果您有客户的名单并希望为他们找到交易:

SELECT reg.*, group_concat(trans.transfer_id)
FROM reg 
LEFT JOIN trans USING (accnumber)
GROUP BY reg.accnumber

您可以过滤该数据,但如果您的客户有超过1笔交易,您可能需要使用“已经”而不是“地点”:

SELECT reg.*, count(trans.transfer_id) as qty
FROM reg 
LEFT JOIN trans ON reg.accnumber = trans.accnumber 
GROUP BY reg.accnumber
HAVING reg.accnumber = '123456'

如果您只需要交易,可以从一个表中请求:

SELECT * FROM trans WHERE accnumber = '123456'

如果你的表是规范化的,你不应该在你的trans表中有accnumber字段,这是reg.id的唯一外键,那么你的查询将是:

SELECT trans.*
FROM trans 
LEFT JOIN reg ON reg.id = trans.user_id
WHERE reg.accnumber = '123456'