2014-05-23 2 views
0

두 테이블을 조인하는 쿼리가 있습니다. Entity Framework의 구문을 사용하기 때문에 SQL의 내부 조인이라고 생각합니다. 그래서 나는 이런 일이 :조인을 추가하면 결과 집합이 변경됩니까

from s in this.Table1 
join a in this.Table2 on s.somefield equals a.somefield 
where (// same conditions....) 
// 

을하고 내가 추가 한 참여와 또 다른 하나 가지고는 결과를 변경

from s in this.Table1 
join a in this.Table2 on s.somefield equals a.somefield 
join b in this.Table3 on a.anotherfield equals b.anotherfield 
where (// same conditions ....) 
// 
+0

예. 그래서 조인을 사용합니다. –

+0

왜 결과 세트를 보지 않았습니까? 당신은 즉시 자신의 질문에 대답했을 것입니다. –

답변

1

"조인"("내부 조인"의 약자)은 Table1의 행과 "ON"절이 참인 Table2의 행을 생성합니다. 예를 들어 테이블에 대한

: 귀하의 경우 그래서

ID, Name, ID, BookName, PersonId 
2, 'Ted', 1, 'SQL', 2 

, 각 내부 조인 :

Person (ID, Name) 
1, 'Bob' 
2, 'Ted' 
3, 'Jill' 

Book(ID, BookName, PersonId) 
1, 'SQL', 2 
2, 'EntityFramework', 4 

Select * 
From Person 
INNER JOIN Book on Person.ID = Book.PersonId 

이 두 테이블 만 "Person.ID = Book.PersonId"의 결과를 생성합니다 당신은 각 JOIN \ ON 절에 따라 최종 결과 집합을 더 제한 할 것입니다! 희망이 어떤 의미가 있습니다.

1

물론 일을. 첫 번째 쿼리에서는 Table1과 Table2 사이에 일치하는 레코드를 얻습니다. 두 번째 쿼리에서는 다른 조건을 충족하는 Table1, Table2 및 Table3간에 일치하는 레코드를 얻는 반면 where 절에서는 몇 가지 조건을 충족합니다. 어디서? 보시다시피, 결과 세트가 다르고 고든이 그의 코멘트에서 이미 지적한 것처럼 은 조인을 사용하는 이유입니다.

관련 문제