Я нашел следующий запрос и ценю его, если кто-то может помочь мне объяснить, что это значит.Выберите из таблицы 1, табл. 2
select * from table1, table2
Я нашел следующий запрос и ценю его, если кто-то может помочь мне объяснить, что это значит.Выберите из таблицы 1, табл. 2
select * from table1, table2
Это называется CROSS JOIN
, но в старом синтаксисе с ,
в статье FROM
.
Он производит декартово произведение, таким образом, количество строк в наборе результатов будет числом строк из table1
, умноженных на числе строк из table2
(предполагая, что нет никаких ограничений в пункте WHERE
). Он эффективно соединяет каждый ряд от table1
с рядом строк от table2
.
Ниже запрос является эквивалентом, но делает явную JOIN
операции, которая отделяет ограничения логики извлечения данных из логики подключения соответствующих данных, хранящихся через отдельные таблицы:
SELECT *
FROM table1
CROSS JOIN table2
Спасибо за объяснение. –
Вы получите все строки из таблицы1, умноженные на все строки таблицы2, и будут отображаться в зависимости от столбцов обеих таблиц. Как отметил @sgeddes, создание декартова продукта.
Table1 (COL1, Col2) с 4 записью
Table2 (Col11, Col22, Col33) 3 записями
при использовании запроса, указанный ниже, он будет производить NxM число строк (декартова Join)
select * from table1, table2
Результат и последовательность столбцов из обеих таблиц будут приведены ниже с 4 x 3 = 12 записями. Col1, Col2, Col11, Col22, Col33
Почему бы вам просто не запустить его, чтобы посмотреть, что он делает? Он создает «декартовое произведение», используя «cross join» ... – sgeddes
Спасибо @sgeddes, теперь я понял. Извинения за мою глупость. –