具有两个可空外键的表将结果连接到单列

时间:2014-02-26 08:18:58

标签: tsql sql-server-2012

很抱歉,标题不是很具描述性。我有一个像这个例子的表,我正在使用sql server 2012:

PersonId | PetID

并希望将其加入以下两个表

PersonId | PersonName | PersonAsset

AnimalId | AnimalName | Animal Asset

所以最终的结果是:

PersonId | PetId | Name | Asset
-------------------------------
1          null    Dave   1
null       1       Fido   2

1 个答案:

答案 0 :(得分:1)

您需要的输出可以通过对两个表使用LEFT JOIN并在ISNULL使用所需字段来实现。

例如(假设第一个表名为'common'):

SELECT common.PersonId,
       common.PetId,
       ISNULL(person.PersonName, animal.AnimalName) AS Name,
       ISNULL(person.PersonAsset, animal.AnimalAsset) AS Asset
FROM common
LEFT JOIN person ON common.PersonId = person.PersonId
LEFT JOIN animal ON common.AnimalId = animal.AnimalId