SQLite CROSS JOIN
Как кросс-соединение работает в SQLite?
Когда две таблицы не имеют никакого отношения, SELECT создаст более фундаментальный тип объединения, который называется перекрестным или декартовым объединением. Декартово соединение является одной из фундаментальных реляционных операций. Это своего рода соединение, которое приводит к объединению всех строк из первой таблицы со всеми строками во второй.
В SQLite CROSS JOIN генерирует результирующий набор, который представляет собой произведение строк двух связанных таблиц, когда предложение WHERE не используется с CROSS JOIN.
В этом соединении результирующий набор появился путем умножения каждой строки первой таблицы на все строки второй таблицы, если с CROSS JOIN не было введено никаких условий.
Этот вид результата называется декартовым произведением.
В SQLite CROSS JOIN ведет себя как JOIN и INNER JOIN без каких-либо условий.
В стандартном SQL различие между INNER JOIN и предложением CROSS JOIN - ON можно использовать с INNER JOIN, с другой стороны, предложение ON нельзя использовать с CROSS JOIN.
Синтаксис:
ВЫБРАТЬ [* | table1.col1, table1.col2, ..., table2.col1, table2.col2 ...] FROm таблица1 [CROSS JOIN] таблица2 состояние;
Пример:
Вот пример таблицы.
стол - таблица_а id des1 des2 ---------- ---------- -------- 100 desc11 desc12 101 desc21 desc22 102 desc31 desc32 таблица - table_b id des3 des4 ---------- ---------- -------- 101 desc41 desc42 103 desc51 desc52 105 desc61 desc62
Вот пример.
SELECT *
FROM table_a
CROSS JOIN table_b;
Ее выход.
id des1 des2 id des3 des4 ---------- ---------- ---------- ---------- ---------- ------- 100 desc11 desc12 101 desc41 desc42 100 desc11 desc12 103 des5151 desc52 100 desc11 desc12 105 desc61 desc62 101 desc22 desc22 101 desc41 desc42 101 desc21 desc22 103 desc51 desc52 101 desc21 desc22 105 desc61 desc62 102 desc32 desc32 101 desc41 desc42 102 desc32 desc32 103 des5151 desc52 102 desc32 desc32 105 desc61 desc62
Иллюстрированная презентация:
Пример: SQLite CROSS JOIN с предложением WHERE
В следующем примере CROSS JOIN были выполнены с предложением WHERE и аналогичны INNER JOIN с предложением ON.
SELECT *
FROM table_a
CROSS JOIN table_b
WHERE table_a.id=table_b.id;
Вот вывод.
id des1 des2 id des3 des4 ---------- ---------- ---------- ---------- ---------- ------- 101 desc22 desc22 101 desc41 desc42
CROSS JOINS: SQL и другие реляционные базы данных
Предыдущая: ЛЕВАЯ НАРУЖНАЯ СОЕДИНЕНИЕ
Далее: ЕСТЕСТВЕННОЕ СОЕДИНЕНИЕ
Новый контент: Composer: менеджер зависимостей для PHP , R программирования