Joins используется для объединения записей из двух или более таблиц в базе данных. SQL определяет три основных типа объединений:
- CROSS JOIN
- INNER JOIN
- OUTER JOIN
CROSS JOIN
CROSS JOIN сопоставляет каждую строку первой таблицы с каждой строкой второй таблицы. Если входные таблицы имеют строки x и y, соответственно, результирующая таблица будет иметь строку x * y. Поскольку CROSS JOINs имеют потенциал для создания чрезвычайно больших таблиц, следует позаботиться о том, чтобы использовать их, когда это необходимо.
SELECT ... FROM table1 CROSS JOIN table2 ...
Основываясь на приведенных выше таблицах, вы можете написать CROSS JOIN следующим образом:
sqlite> SELECT EMP_ID, NAME, DEPT FROM COMPANY CROSS JOIN DEPARTMENT;
INNER JOIN
INNER JOIN создает новую таблицу результатов, комбинируя значения столбцов двух таблиц (table1 и table2) на основе предиката соединения. Запрос сравнивает каждую строку таблицы1 с каждой строкой таблицы2, чтобы найти все пары строк, которые удовлетворяют предикату соединения. Когда предикат соединения выполняется, значения столбца для каждой парной пары строк из A и B объединяются в строку результатов.
INNER JOIN - наиболее распространенный тип соединения по умолчанию. Вы можете использовать ключевое слово INNER.
SELECT ... FROM table1 [INNER] JOIN table2 ON conditional_expression ...
Чтобы избежать избыточности и сократить сроки написания, условия INNER JOIN могут быть объявлены с помощью выражения USING. Это выражение указывает список из одного или нескольких столбцов.
SELECT ... FROM table1 JOIN table2 USING ( column1 ,... ) ...
NATURAL JOIN похож на JOIN...USING , он автоматически проверяет равенство между значениями каждого столбца, который существует в обеих таблицах,
SELECT ... FROM table1 NATURAL JOIN table2...
Основываясь на приведенных выше таблицах, вы можете написать INNER JOIN следующим образом:
sqlite> SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT
ON COMPANY.ID = DEPARTMENT.EMP_ID;
OUTER JOIN
OUTER JOIN - это расширение INNER JOIN. Хотя стандарт SQL определяет три типа OUTER JOIN: LEFT, RIGHT и FULL, SQLite поддерживает только LEFT OUTER JOIN .
OUTER JOINs имеют условие, идентичное INNER JOINs, выраженное с помощью ключевого слова ON, USING или NATURAL. Исходная таблица результатов вычисляется одинаково. Когда первичный JOIN вычисляется, OUTER JOIN будет брать любые несвязанные строки из одной или обеих таблиц, выкладывать их с помощью NULL и добавлять их в итоговую таблицу.
SELECT ... FROM table1 LEFT OUTER JOIN table2 ON conditional_expression ...
Чтобы избежать избыточности и сократить сроки написания, условия OUTER JOIN могут быть объявлены с помощью выражения USING. Это выражение указывает список из одного или нескольких столбцов.
SELECT ... FROM table1 LEFT OUTER JOIN table2 USING ( column1 ,... ) ...
Основываясь на приведенных выше таблицах, вы можете написать внутреннее соединение следующим образом:
sqlite> SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT
ON COMPANY.ID = DEPARTMENT.EMP_ID;
0 комментариев