SQL для выполнения объединения данных из нескольких таблиц предусматривает четыре вида объединений:
- INNER JOIN (или просто JOIN) — возвращает те (и только те) записи из двух таблиц, которые отвечают условию ON (остальные записи в выборку не попадают)
- LEFT OUTER JOIN (или просто LEFT JOIN) — возвращает все записи первой (левой) таблицы и отвечающие условию ON записи из второй (правой) таблицы; если для записи из первой таблицы нет соответствий во второй таблице, то она все равно попадет в выборку, а запись из второй таблицы будет заменена на NULL
- RIGHT OUTER JOIN (или просто RIGHT JOIN) — тоже самое, что и LEFT JOIN, но таблицы меняются местами, т.е. возвращаются все записи из второй таблицы и отвечающие условию ON записи из первой таблицы или NULL
- FULL OUTER JOIN — возвращает все записи из первой таблицы и все записи из второй таблицы, объединяя их по условию ON, при этом в обеих таблицах недостающие соотвеnствия заменяются на NULL
В LINQ все виды объединений можно выполнить с помощью выражений join
и into
в синтаксисе запросов и операторов Join()
, GroupJoin()
, DefaultIfEmpty()
и Union()
в синтаксисе методов.