如何在SQL中从不同的表联接两个字段

时间:2019-03-27 23:49:28

标签: php mysql sql pdo

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

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

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

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

tbl_user表:

tbl_user table

tbl_user output

donate表:

donate table

donate output

$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)"
);

3 个答案:

答案 0 :(得分:1)

  

我想从donation_date中获取tbl_user列,并从donate表中获取所有列。

您是否正在寻找...表JOINtbl_user之间的简单donate

从您的模式图像来看,好像列passport_IPC可用于联接表。然后,您可以在SELECT子句中选择要返回的列:

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

答案 1 :(得分:0)

看起来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

答案 2 :(得分:0)

如您所说,您希望从tbl_user获取列donation_date,因此您将仅选择列tbl_user.donation_date并使用以下别名donation_date并从捐赠表中获取所有列,您可以使用这个技巧donate.*,它会获得所有列

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