개체가있을 수도 있고 가지지 않을 수도있는 다양한 특성을 포함하는 특성 테이블이 있습니다.빈 하위 집합을 포함 할 수있는 여러 외부 조인
개체와 함께 모든 특성을 가져 오려고합니다. 특성이없는 경우 null입니다. 쿼리에서
내 첫 번째 시도는이이었다
SELECT o.Id ,
aa.Value AS AttributeA,
ab.Value AS AttributeB,
ac.Value AS AttributeC
FROM Objects o
LEFT OUTER JOIN Attributes aa
ON (o.Id = aa.ObjectId)
LEFT OUTER JOIN Attributes ab
ON (o.Id = ab.ObjectId)
LEFT OUTER JOIN Attributes ac
ON (o.Id = ac.ObjectId)
WHERE (aa.AttributeTypeId = 1 OR aa.AttributeTypeId IS NULL)
AND (ab.AttributeTypeId = 2 OR ab.AttributeTypeId IS NULL)
AND (ac.AttributeTypeId = 3 OR ac.AttributeTypeId IS NULL)
AND o.Id = @objectId
이 문제는 어떤 객체가 아직없는 경우, 말을 너무 만 전혀 속성을 가진 개체를 다음 AA의 일부가 비어하는 속성이다 반환됩니다.
많은 수의 UNION으로 들어 가지 않고 속성 시나리오가 혼합 된 경우에도 SQL Server가 모든 개체를 반환하도록하려면 어떻게해야합니까? (특성 유형의 수가 20 개 이상인 경우)?