2016-10-04 5 views
-1

Я нашел следующий запрос и ценю его, если кто-то может помочь мне объяснить, что это значит.Выберите из таблицы 1, табл. 2

select * from table1, table2 
+2

Почему бы вам просто не запустить его, чтобы посмотреть, что он делает? Он создает «декартовое произведение», используя «cross join» ... – sgeddes

+0

Спасибо @sgeddes, теперь я понял. Извинения за мою глупость. –

ответ

5

Это называется CROSS JOIN, но в старом синтаксисе с , в статье FROM.

Он производит декартово произведение, таким образом, количество строк в наборе результатов будет числом строк из table1, умноженных на числе строк из table2 (предполагая, что нет никаких ограничений в пункте WHERE). Он эффективно соединяет каждый ряд от table1 с рядом строк от table2.

Ниже запрос является эквивалентом, но делает явную JOIN операции, которая отделяет ограничения логики извлечения данных из логики подключения соответствующих данных, хранящихся через отдельные таблицы:

SELECT * 
FROM table1 
CROSS JOIN table2 
+1

Спасибо за объяснение. –

1

Вы получите все строки из таблицы1, умноженные на все строки таблицы2, и будут отображаться в зависимости от столбцов обеих таблиц. Как отметил @sgeddes, создание декартова продукта.

0

Table1 (COL1, Col2) с 4 записью

Table2 (Col11, Col22, Col33) 3 записями

при использовании запроса, указанный ниже, он будет производить NxM число строк (декартова Join)

select * from table1, table2 

Результат и последовательность столбцов из обеих таблиц будут приведены ниже с 4 x 3 = 12 записями. Col1, Col2, Col11, Col22, Col33

Смежные вопросы