选择字段和连接子句

时间:2019-04-30 12:59:38

标签: sql db2

我有两个表, TableA:

- Original_Location
- Units

TableB:

- Original_Loc
- Adjacent_Loc
- Direction (up/down/left/right from original loc)

我的目标是返回相邻位置的原始位置,相邻位置,方向和单位数量。到目前为止,我只能从原始位置返回单位。

这是我到目前为止尝试过的:

Select Original_Location,
Units,
TableB.Adjacent_Loc,
TableB.Direction

From TableA

Inner Join

Select *
From TableB

On TableA.Original_Location = TableB.Original_Loc

我的想法是我可能需要在内部联接之前更改选择的字段,或者可能在Original_Location = Adjacent_Loc上联接。

1 个答案:

答案 0 :(得分:1)

您的Join语法不正确。首先,您不需要从表B中“选择”任何内容,您的初始SELECT是从联接的表(A和B)中获取数据,就像它们是1个表一样。其次,您需要指定用于连接表的字段。

您的加入将类似于:-

From TableA Inner Join TableB
on TableA.Original_Loc = TableB.Original_Loc

一旦正确建立了连接,则需要再次连接TableA以获得单元。这次,您将表B中的Adjacent_Loc加入表A中的Original_Location-这将具有您需要的Units值。

下面的示例使用别名标识每个表(现在有2个对TableA的引用,因此需要分别进行标识)。因此,当您进行第二次对TableA的联接时,它具有别名c来将其与第一个TableA引用区分开。然后,您需要从c中选择单位。

Select a.Original_Location, c.Units, b.Adjacent_Loc, b.Direction
From TableA a Inner Join TableB b On a.Original_Location = b.Original_Loc
inner join TableA c on b.Adjacent_Loc = c.Original_Location