2011-01-14 4 views
3
Given 2 tables T1 and T2. 
T1 T2 
A 1 
B 2 
C 3 
You make a query SELECT * FROM T1, T2. 
What is the no: of rows that are fetched from this query? 

대답 그것은 카티 제품입니다 9왜이 행에서 9 개의 행을 가져 오나요?

+0

당신은 출력으로이 9 개 행이 (순서는 다를 수 있음)? –

+0

Google : sql implicit "CROSS JOIN" – onedaywhen

답변

10

다른 조건이 없으므로이 쿼리는 cartesian product이됩니다. 첫 번째 테이블의 모든 행은 두 번째 테이블의 모든 행과 일치합니다.

결과는 당신이 그것을 물어 무엇을 그

A 1 
A 2 
A 3 
B 1 
B 2 
B 3 
C 1 
C 2 
C 3 
+0

@Klaus Byskov Hoffmann 고마워! – nan

2

입니다 : 하나 개의 테이블 (3)과 다른 테이블의 모든 행에서 모든 행을 선택 (3) 결합하여 3 * 3 = 9가됩니다.

0

입니다. T1의 모든 행과 T2의 모든 행이 있습니다. 그들은 함께 추가되는 것이 아니라 열이 다르면 작동하지 않습니다. 예를 들어, UNION으로이 작업을 수행 할 수 있습니다. "카티 션 제품"으로 병합됩니다. 기본적으로 두 테이블의 모든 행 조합을 가져옵니다. 그리고 3*3 = 9.

+0

@Downvoter : 일반적인 의례로 downvotes를 설명하는 설명을 남겨주세요. –

3

첫 번째 테이블의 각 레코드가 두 번째 테이블의 각 레코드와 함께 반환되고 결과가 필터링되지 않기 때문에 결과가 필터링되지 않습니다.

정확한 출력은 다음과 같습니다

T1 T2 
A 1 
A 2 
A 3 
B 1 
B 2 
B 3 
C 1 
C 2 
C 3 

관련 문제