【发布时间】:2016-01-29 19:25:06
【问题描述】:
我正在尝试对 3 个 SQL 表中的 3 个字段进行左外连接。目标是,给定表 T1 中的对象 (O1) 查询,表 T2 中包含 3 个元素(E1、E2、E3)和表 T3 中的 2 个次要特征(S1、S2),返回如下结果集:
O1 | E1 | S1
O1 | E2 | S2
O1 | E3 |
我将如何为多个对象执行此操作?我已经尝试过左外连接、分组依据和不同 SQL 查询的组合,但似乎无法以不是太多组合的方式返回行。S
这是我尝试过的最简单的示例,它返回 6 个结果:
select a.O, b.E, c.S from
T1 a
left outer join T2 b on a.O = b.O
left outer join T3 c on a.O = c.O
where a.O in ('O1');
返回的结果是:
O1 | E1 | S1
O1 | E1 | S2
O1 | E2 | S1
O1 | E2 | S2
O1 | E3 | S1
O1 | E3 | S2
注意:使用左外连接是因为即使 T2 或 T3 没有结果,我也需要表返回结果。
【问题讨论】:
-
请显示您尝试的查询。此外,您对描述所做的任何澄清都会有所帮助。
-
您能否发布有关您的数据库结构的更详细信息?包括更大的样本数据和期望输出。请阅读stackoverflow.com/help/how-to-ask这里是START的好地方
-
我猜你样品上的
L1, L2应该是你描述上的S1, S2 -
道歉。用我尝试过的简单查询进行了更新。如果您愿意,我可以更新更多内容,但没有保存它们,因此我必须返回并重新创建它们。
-
您的查询看起来正确。只需按条件添加订单。