LINQ to SQL: 여러 조인 조건을 사용하여 왼쪽 외부 조인 수행
LINQ to SQL을 사용하면 여러 조인 조건을 사용하여 왼쪽 외부 조인을 수행하여 오른쪽 테이블에 해당 행이 없더라도 왼쪽 테이블의 행을 포함하여 여러 테이블에서 데이터를 검색할 수 있습니다.
여러 조인 조건을 사용하여 왼쪽 외부 조인을 구현하려면 먼저 기본 조인 조건을 설정해야 합니다. 이는 일반적으로 테이블의 기본 키 간의 관계입니다. 기본 조인이 있으면 추가 조인 조건을 추가하여 결과를 추가로 필터링할 수 있습니다.
귀하가 제공한 샘플 SQL 쿼리:
<code class="language-sql">SELECT f.value FROM period as p LEFT OUTER JOIN facts AS f ON p.id = f.periodid AND f.otherid = 17 WHERE p.companyid = 100</code>
'companyid'를 기준으로 '기간' 테이블의 행을 필터링하고 'id' 및 'otherid' 조인 조건을 기반으로 'facts' 테이블에서 해당 '값'을 검색합니다.
이 쿼리를 LINQ로 변환하려면 Join()
메서드와 DefaultIfEmpty()
메서드를 사용하여 외부 조인을 처리해야 합니다. 특정 SQL 쿼리에 대한 올바른 LINQ 구현은 다음과 같습니다.
<code class="language-csharp">from p in context.Periods join f in context.Facts on p.id equals f.periodid into fg from fgi in fg.Where(f => f.otherid == 17).DefaultIfEmpty() where p.companyid == 100 select f.value</code>
Where()
절은 otherid
에 추가 조인 조건을 적용하는 데 사용됩니다. DefaultIfEmpty()
메서드는 오른쪽 테이블에 일치하는 행이 없더라도 왼쪽 테이블의 행이 포함되도록 합니다.
또는 하위 쿼리를 사용할 수도 있습니다.
<code class="language-csharp">from p in context.Periods join f in context.Facts on p.id equals f.periodid into fg from fgi in (from f in fg where f.otherid == 17 select f).DefaultIfEmpty() where p.companyid == 100 select f.value</code>
두 방법 모두 제공된 SQL 쿼리와 동일한 결과를 생성합니다. 다음 단계를 수행하면 LINQ to SQL의 여러 조인 조건을 사용하여 왼쪽 외부 조인을 효율적으로 수행할 수 있습니다.
위 내용은 LINQ to SQL에서 여러 조인 조건을 사용하여 왼쪽 외부 조인을 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!