SQL Server,联接到具有同一列的多个表

时间:2019-02-27 19:01:25

标签: sql sql-server database

使用SQL Server,我有一个表,该表可以使用同一列与多个表连接。该表有两列,SourceType和SourceID。 SourceType是要连接的表,SourceID是我们要连接的表的主键。这样会产生如下查询:

select * 
from MyTable join TableOne
where MyTable.SourceId = TableOne.ID
   and MyTable.SourceType = 'TableOne';

select * 
from MyTable join TableTwo
where MyTable.SourceId = TableOne.ID
   and MyTable.SourceType = 'TableTwo';

我需要对此做一些研究。这种方法叫什么?

2 个答案:

答案 0 :(得分:2)

如果我理解正确,那么您正在尝试使用一列来引用2个不同表的主键。我认为该方法称为polymorphic associations。这个概念是有效的,但是使用您的解决方案来实施它不是最佳方法。 Here's some other ways to do it.

答案 1 :(得分:0)

我认为您想要这样的东西:

Select *
FROM Mytable AS myt
RIGHT JOIN TableOne AS tb1 ON myt.SourceId = tb1.ID

SELECT *
FROM MyTable AS myt
RIGHT JOIN TableTwo AS tb2 ON myt.SourceId = tb2.ID

您可以在这里找到更多详细信息:https://www.w3schools.com/sql/sql_join.asp