如何在sql中连接来自不同表的两个字段

Posted

技术标签:

【中文标题】如何在sql中连接来自不同表的两个字段【英文标题】:how to join two field from different table in sql 【发布时间】:2019-03-27 23:49:27 【问题描述】:

我在 phpmyadmin 中有两个不同的表。一个是tbl_user,另一个是donate

现在我想从tbl_user 中获取donation_date 列以及donate 表中的所有列。我想加入tbl_user 表中的一列(donation_date)和donate 表中的所有列,但不知道如何编写查询。

在下面的代码中,我刚刚编写了donate 表的查询,那么如何从tbl_user 加入donation_date

这是我在 phpmyadmin 中的两个表的详细信息。

tbl_user 表:

donate表:

$db = new PDO('mysql:host=localhost;dbname=mypro_bms','root','');
$statement = $db->prepare(
    "insert into donate(passport_ic,blood_group,blood_bag,)
     values(:passport_ic, :blood_group, :blood_bag)"
);

【问题讨论】:

能否向我们展示表 tbl_userdonate 的示例数据,以及相应的预期输出? 我已经在那里编辑了我的帖子,然后检查输出 【参考方案1】:

我想从tbl_user 中获取donation_date 列以及donate 表中的所有列。

您是否正在寻找...JOINtbl_userdonate 之间的简单 JOIN

从您的架构图像来看,passport_IPC 列似乎可用于连接表。然后您可以选择在SELECT 子句中返回哪些列:

SELECT u.donation_date, d.*
FROM tbl_user u
INNER JOIN donate d ON d.passport_IPC = u.passport_IPC

【讨论】:

问题是我想显示捐赠者记录。为此,我需要来自捐赠表的所有信息和来自 tbl_user 表的捐赠日期。 @MimHsan:好的,这就是查询的作用。您能否根据您的数据对其进行测试,并告诉我它是否适合您?【参考方案2】:

看起来 Passport_IC 是两个表之间的公共列?

您确实应该使用数字索引列。但是由于您的数据库很小,因此应该可以:

SELECT d.*, u.donation_date
FROM donate d
INNER JOIN tbl_user u ON u.Passport_IC = d.Passport_IC

编辑:你应该给你的 tbl_user 表一个主键。查看数据库规范化:https://en.wikipedia.org/wiki/Database_normalization

【讨论】:

【参考方案3】:

正如您所说,您想从 tbl_user 获取列donation_date,因此您将仅选择列 nedded tbl_user.donation_date 并使用以下别名 donation_date 并从捐赠表中获取所有列,您可以使用此技巧 @ 987654323@,获取所有列

SELECT 
    donate.* , tbl_user.donation_date as donation_date 
FROM 
    tbl_user
JOIN 
    donate ON donate.passport_IPC = tbl_user.passport_IPC

【讨论】:

感谢您提供此代码 sn-p,它可能会提供一些有限的即时帮助。一个适当的解释将通过展示为什么这是解决问题的好方法来极大地提高其长期价值,并使其对有其他类似问题的未来读者更有用。请编辑您的答案以添加一些解释,包括您所做的假设。 谢谢你,你说得对,我现在就补充一些解释

以上是关于如何在sql中连接来自不同表的两个字段的主要内容,如果未能解决你的问题,请参考以下文章

连接来自不同数据库的同名表的结果

当涉及两个以上的表时,如何将来自相似字段的单个表的两个左连接转换为 LINQ? [复制]

如何在 SQL 中显示来自 3 个不同表的多个列?

如何使用来自两个不同表的旧信息自动填充编辑表单?

sql 不同表的排序

如何对比两个相同数据库表的不同