Для того, чтобы явно указать соединение двух таблиц используется операция join:
1
|
таблица1 [модификатор] JOIN таблица2 ON условие
|
Т.е для того чтобы связать таблицу Student и StudentGroup достаточно использовать следующий запрос:
1
|
SELECT * FROM Student JOIN StudentGroup ON Student.GroupID=StudentGroup.ID
|
Рассмотрим какие бывают модификаторы:
- «По умолчанию» — в результирующий набор попадут только те строки для которых значение условия равно истине
- «LEFT» — в результирующий набор попадут те записи, которые содержатся в левой таблице и к ним присоединятся записи из второй таблицы, которые соответствуют условию, если же таких записей не найдется, то к присоединяться значения NULL
- «RIGHT» — тоже самое что и «LEFT», только нужно поменять местами первую и вторую таблицу.
- «FULL» — является комбинацией «LEFT» и «RIGHT».
Для лучшего понимания необходимо потестировать базу данных самому. Приведу некоторые примеры запросов:
1
|
SELECT * FROM Student LEFT JOIN StudentGroup ON Student.GroupID=StudentGroup.ID
|
Эквивалентно
1
|
SELECT * FROM StudentGroup RIGHT JOIN Student ON Student.GroupID=StudentGroup.ID
|
Два приведенных ниже запроса эквивалентны, если всегда существует для каждой группы — студент и для каждого номера группы в таблице студентов существует группа, т.е не будет значений равных NULL
1
2
|
SELECT * FROM StudentGroup JOIN Student ON Student.GroupID=StudentGroup.ID
SELECT * FROM StudentGroup FULL JOIN Student ON Student.GroupID=StudentGroup.ID
|
Также при полном соединение таблиц (full join) следующих два запроса тоже эквивалентны:
1
2
|
SELECT * FROM Student FULL JOIN StudentGroup ON Student.GroupID=StudentGroup.ID
SELECT * FROM StudentGroup FULL JOIN Student ON Student.GroupID=StudentGroup.ID
|
|