>데이터 베이스 >MySQL 튜토리얼 >LINQ to SQL에서 여러 조인 조건을 사용하여 왼쪽 외부 조인을 수행하는 방법은 무엇입니까?

LINQ to SQL에서 여러 조인 조건을 사용하여 왼쪽 외부 조인을 수행하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-12 06:14:47402검색

How to Perform a Left Outer Join with Multiple Join Conditions in LINQ to SQL?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.