[英]sql complex join
我有三个相关的表,我想使用联接从中检索数据:包含用户帐户详细信息的 tbl_accounts、包含用户个人详细信息的 tbl_users 和包含所有用户交易详细信息的 tbl_t_records。
在tbl_accounts 中,我有一个外键列持有者,可以帮助将其链接到tbl_users ,在tbl_t_records 中,我有外键列oaccount和daccount,每个列都链接到tbl_accounts,但oaccount存储了在daccount期间发起交易的帐户的详细信息存储交易目的地帐户的详细信息
我想创建一个查询,该查询使用连接返回发送者、接收者和交易 ID 的名称。 到目前为止,这是我尝试过的
SELECT tbl_t_records.id transaction_id,
CONCAT(tbl_users.lname,tbl_users.othername)as sender,
amount,
CONCAT(tbl_users.lname,tbl_users.othername)as receiver
FROM tbl_t_records
INNER JOIN tbl_accounts on oaccount = tbl_accounts.id
INNER JOIN tbl_users ON tbl_accounts.holder = tbl_users.id
您只需要多个join
s - 每个名称的单独集合:
SELECT r.*,
CONCAT(uo.lname, uo.othername) as sender,
CONCAT(ud.lname, ud.othername) as receiver
FROM tbl_t_records r JOIN
tbl_accounts ao
ON r.oaccount = ao.id JOIN
tbl_users uo
ON ao.holder = uo.id JOIN
tbl_accounts ad
ON r.daccount = ad.id JOIN
tbl_users ud
ON ad.holder = ud.id;
您可以多次加入,如下所示:
select
r.id transaction_id,
concat(u1.lname, u1.othername) sender,
concat(u2.lname, u2.othername) receiver,
r.amount
from tbl_t_records r
inner join tbl_accounts a1 on a1.id = r.oaccount
inner join tbl_users u1 on u1.id = a1.holder
inner join tbl_accounts a2 on a2.id = r.daccount
inner join tbl_users u2 on u2.id = a2.holder
此查询从事务表开始,然后通过tbl_accounts
(别名a1
)到tbl_users
(别名u1
)遵循与oaccount
相关的关系。 另一系列连接从daccount
开始,并带来相关的用户数据(别名a2/u2
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.