Как SELECT из двух таблиц, разделенных запятой? (SELECT * FROM T1, T2)

Для двух таблиц T1 и T2.

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

Вы делаете запрос:

SELECT * 
  FROM T1, T2

Что такое no: из строк, которые извлекаются из этого запроса?

(a) 4
(b) 5
(c) 6
(d) 9

Ответ: 9

Вопрос:

Почему ответ "9"?

Ответы

Ответ 1

Запятая между двумя таблицами означает CROSS JOIN, которая дает Декартовский продукт из двух таблиц. Ваш запрос эквивалентен:

SELECT *
FROM T1
CROSS JOIN T2

В результате получается каждое спаривание строки из первой таблицы со строкой из второй таблицы. Поэтому количество строк в результате является результатом количества строк в исходных таблицах. В этом случае ответ равен 3 x 3 = 9.

Строки будут выглядеть следующим образом:

T1.foo   T2.bar
A        1
A        2
A        3
B        1
B        2
B        3
C        1
C        2
C        3