连接没有公共列但使用连接到两者的另一个表的两个表

Posted

技术标签:

【中文标题】连接没有公共列但使用连接到两者的另一个表的两个表【英文标题】:Joining two tables without a common column but using another table connected to both 【发布时间】:2019-08-26 15:16:30 【问题描述】:

我在mysql中有三个表

表 A-> uid, itemType, balance,orderType 表B-> orderId, itemType, 数量 表 C-> uid,orderId

我需要为每个 uid:orderIdcombination 获取特定类型项目的 (balance-qty)。如果表 A 和表 B 没有要加入的公共列,我该如何连接它们。但是它们都连接到表C。

【问题讨论】:

您可以在一个 SELECT 语句中加入所有三个。您将有两个 JOIN 子句。见SQL inner join more than two tables。 【参考方案1】:

三个表之间的连接:

select a.uid, a.balance, b.qty
from tablea a 
inner join tablec c on c.uid = a.uid
inner join tableb b on b.orderid = c.orderid
where a.itemtype = ?

如果需要,您可以添加更多列。

【讨论】:

以上是关于连接没有公共列但使用连接到两者的另一个表的两个表的主要内容,如果未能解决你的问题,请参考以下文章

如何将两个事实表连接到一维表

使用 RIGHT JOINT 将两个表连接到一个 datagridview

如何将学生和评估表连接到一个视图中?

What Joins 用于将多个表连接到一个视图中

mysql - 如何使用父表中的值将连接表连接到另一个连接表?

Hibernate:如何在注释中将三个 3 表连接到一个连接表中?