用于查找缺失" child"的SQL " parent"中每条记录的记录表1:很多关系

时间:2015-08-21 14:40:31

标签: sql

可能是重复但我找不到正确的搜索字词来找到它...

我有一个父母"属性表,联系类型的查找表(其中一些是推荐/预期的,其中一些是完全可选的),以及一个"孩子"每个财产的联系人表:

PROPERTY: propId, propName, ...
CONTACTTYPE: typeId, typeName, typeIsRecommended
PROPCONTACTS: propId, typeId, contName, ...

我需要为所有属性显示推荐的联系人,包括那些尚未为每个属性创建的联系人。期望的输出(假设3种推荐的接触类型):

propName,typeName,contName
'Mountain Mall','Manager','Jill'
'Mountain Mall','Engineer','Jane'
'Mountain Mall','Analyst','Jack'
'Central Hotel','Manager','Bob'
'Central Hotel','Engineer',NULL
'Central Hotel','Analyst',NULL
...

我可以轻松地为具有LEFT JOIN的单个属性执行此操作;我无法一次弄清楚如何为所有属性做这件事。我使用的是SQL Server,如果解决方案特定于该环境,则可以。

1 个答案:

答案 0 :(得分:1)

以下是查询:

with s as
(
    select * 
    from property
    cross join contacttype
)
select s.propname, s.typename, pc.contname
from s
left outer join propcontacts pc on pc.typeid = s.typeid and pc.propid = s.propid