Sql 从不在同一查询的左外部联接中的表中获取字段
我有4个表,其中3个是连接的,但我需要从第四个表(表D)中获取一个字段。为了简单起见,我们假设它们是表A、B、C、DSql 从不在同一查询的左外部联接中的表中获取字段,sql,sql-server,join,Sql,Sql Server,Join,我有4个表,其中3个是连接的,但我需要从第四个表(表D)中获取一个字段。为了简单起见,我们假设它们是表A、B、C、D Select Distinct A.Field_1, B.Field_2, C.Field_3 From Table_A Left outer join B on A.Field_z= B.Field_z Left Outer Join C on A.Field_z= C.Field_z where A.Field_z in (1111); 这似乎可行,但我需要表D中的一个字段
Select Distinct A.Field_1, B.Field_2, C.Field_3
From Table_A
Left outer join B on A.Field_z= B.Field_z
Left Outer Join C on A.Field_z= C.Field_z
where A.Field_z in (1111);
这似乎可行,但我需要表D中的一个字段,该字段仅通过表C连接到表a
如何将其添加到联接中?或者我可以吗
谢谢
WB当然可以添加它。您不需要指定逻辑,但可以指定如下内容:
Select Distinct A.Field_1, B.Field_2, C.Field_3, D.??
From Table_A a Left outer join
B
on A.Field_z= B.Field_z Left Outer Join
C
on A.Field_z= C.Field_z Left Outer Join
D
on . . .
where A.Field_z in (1111);
只要填写你想要的条件。您需要一个
左联接
,因为c
和d
之间的条件会将c
的外部联接变成内部联接。当然可以添加它。您不需要指定逻辑,但可以指定如下内容:
Select Distinct A.Field_1, B.Field_2, C.Field_3, D.??
From Table_A a Left outer join
B
on A.Field_z= B.Field_z Left Outer Join
C
on A.Field_z= C.Field_z Left Outer Join
D
on . . .
where A.Field_z in (1111);
只要填写你想要的条件。您需要一个
左联接
,因为c
和d
之间的条件会将c
的外部联接变成内部联接。如果我理解正确,我相信这会起作用:
Left Outer Join D on C.Field_z= D.Field_z
如果我理解正确,我相信这是可行的:
Left Outer Join D on C.Field_z= D.Field_z
你可以这样试试。我想这会有帮助的
Select Distinct A.Field_1, B.Field_2, C.Field_3, c.Field_4
From Table_A
Left outer join B on A.Field_z= B.Field_z
Left Outer Join ( select C.field_3, d.Field_4, c.Field_z from c inner join d on c.field_z = d.field_z ) c on A.Field_z= C.Field_z
where A.Field_z in (1111);
你可以这样试试。我想这会有帮助的
Select Distinct A.Field_1, B.Field_2, C.Field_3, c.Field_4
From Table_A
Left outer join B on A.Field_z= B.Field_z
Left Outer Join ( select C.field_3, d.Field_4, c.Field_z from c inner join d on c.field_z = d.field_z ) c on A.Field_z= C.Field_z
where A.Field_z in (1111);
on
子句基本上具有where
子句的所有特性on
子句对于联接的任何部分都可以引用from
子句中任何实体的任何属性,我怀疑您的混淆是因为您认为只能将后续实体联接到from
子句中的第一个实体。如果表D
通过表C
与表A
相关,您可能会在结构上看到来自/的
select a.thing, b.things, c.thang, d.stuff
from Table_A a
left join Table_B b
on a.id = b.a_id
left join Table_C c
on a.id = c.a_id
left join Table D d
on d.id = c.d_id
where
a.this = b.that
请注意,单词“outer”隐含在左连接中,对于语法完成不是必需的。on
子句的基本上具有where
子句的所有特征on
子句对于联接的任何部分都可以引用from
子句中任何实体的任何属性,我怀疑您的混淆是因为您认为只能将后续实体联接到from
子句中的第一个实体。如果表D
通过表C
与表A
相关,您可能会在结构上看到来自/的
select a.thing, b.things, c.thang, d.stuff
from Table_A a
left join Table_B b
on a.id = b.a_id
left join Table_C c
on a.id = c.a_id
left join Table D d
on d.id = c.d_id
where
a.this = b.that
请注意,单词“outer”隐含在左连接中,对于语法完成不是必需的。您尝试过什么?你应该可以很好地加入,你试过什么?你应该可以很好的加入,谢谢!这确实帮助我生成了所需的查询。我现在每天都在用它。这是我第一次使用stackoverflow提问,所以我想我只是打了个勾。如果我还需要做什么,请告诉我。感谢所有回复的人!绿色的复选标记就是它!如果你觉得特别慷慨,向上箭头也有助于我的声誉。很高兴我能帮上忙谢谢你!这确实帮助我生成了所需的查询。我现在每天都在用它。这是我第一次使用stackoverflow提问,所以我想我只是打了个勾。如果我还需要做什么,请告诉我。感谢所有回复的人!绿色的复选标记就是它!如果你觉得特别慷慨,向上箭头也有助于我的声誉。很高兴我能帮上忙