나는 다음과 같은 테이블이 한을 결정하기 위해 쿼리를 EXISTS Foo의 id와 레코드의 상태 (부모인지 자식인지 또는 둘 다 아님).SQL 서버의 관계를
규칙, • foo는 단지 부모 나 자녀 또는도 될 것
- .
- foo는 여러 다른 foos의 부모가 될 수 있습니다.
- foo는 둘 이상의 foo의 하위 일 수 없습니다.이는 푸 다른 두 FOOS에 부모 때문에 경우 고장
SELECT FooId, CASE WHEN Parent.FooRelationshipId IS NOT NULL THEN 'Parent' WHEN Child.FooRelationshipId IS NOT NULL THEN 'Child' ELSE 'Neither' END FROM Foo F LEFT JOIN FooRelationship Parent ON F.FooId = Parent.FooParentId LEFT JOIN FooRelationship Child ON F.Fooid = Child.FooParentId
다음은 그 ID를 두 번 반환
나는 원래이 쿼리를 썼다.
어떻게 이것을 조인을 사용하거나 EXISTS 등을 사용하지 않도록 다시 작성할 수 있습니까?
이 쿼리를 작성하는 더 좋은 방법이 있습니까? 이 테이블에는 몇 개의 행이 있고 30-40 개의 열이 있기 때문에 성능에 대해 걱정이됩니까? – Dismissile
@Dismissile 더 많은 정보가 필요 하겠지만, 하나의 옵션은 예제 (좁은) 쿼리를 subselect로 사용하고 JOIN하는 것입니다. 그러면'FooID, Relationship' 정보를 나머지 행을 얻지 않고 얻을 수 있고,'JOIN'을 사용하면됩니다. 나는 그 예를 올릴 것이다. – JNK
감사합니다. 덕분에 많은 도움이되었습니다. – Dismissile