使用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';
我需要对此做一些研究。这种方法叫什么?
答案 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