从同一个表中提取不同数据的不同数据,并将其他表作为查找

时间:2017-02-03 13:35:18

标签: sql sql-server join

我有两张桌子。一个给我关于人口统计学的基本信息。我的人口统计表中的一个类别是人员的一部分,该表位于此表的ATID 530(有数百种不同的ATID)中:

enter image description here

正如您所看到的,此表的PK是ADefID。我的另一张桌子用它作为FK。它将索引包含在原始表中的记录的其他定义中。但是,这些附加定义也只是原始表中的记录。第二个表只是提供指针。

enter image description here

因此,如果我们选择一条记录,让我们说ADefID = 4684423,并在第二张表格中查找,我们将返回:

enter image description here

然后,CategoryADefID将指向原始表格的ADefID以获取另一条记录:

enter image description here

(请注意,此ADefID的ATID与原来的ADefID不同,这与此相关)

因此。让我们说我想从第一行中提取一组记录,比如

WHERE ATID = 530 AND CycleID = 9600

但我也希望将相关定义中的ADesc(可能是ADEValue)作为一个单独的字段。

所以最终结果看起来像这样:

enter image description here

我理解足以使连接到第二个表并返回CategoryADefID,但我不知道如何使用它来回调原始表中的另一个ADefID。另一个限制是我将在WHERE子句中使用ATID字段(ATID = 530),相关定义将具有不同的ATID。

1 个答案:

答案 0 :(得分:1)

只需将另一个联接添加回原始表:

 Select *
 From tableA a
   join tableB b on b.ADefID=a.ADefID
   join tableA a2 on a2.ADefID = b.CategoryADefID  
 Where a.ADefID = 4684423