MS SQL Server - Расширенные объединения TSQL

MS SQL Server

MS SQL Server - Расширенные объединения TSQL

Расширенные объединения TSQL находятся в секции WHERE. В объединениях TSQL оператор сравнения используется для столбцов объединяемых таблиц или для выражений, содержащих столбцы:

SELECT * FROM titles, titleauthor
WHERE titles.title_id = titleauthor.title_id

Если между таблицами отсутствует оператор сравнения, выполняется ортогональное объединение. Внутренние объединения выполняются с помощью стандартных операторов сравнения между столбцами. Для внешних объединений в SQL Server существуют специальные операторы сравнения: *= используется для левых внешних объединений, а =* — для правых внешних объединений.

ВАЖНО!

В расширениях TSQL не существует оператора для выполнения полного внешнего объединения. При попытке воспользоваться оператором *=* выдается сообщение об ошибке.

В расширенных объединениях TSQL действуют некоторые ограничения. Например, если таблица использовалась в качестве внешней во внешнем объединении, она может быть внутренней таблицей внешнего или внутреннего объединения.

Расширенные объединения TSQL продемонстрированы в нескольких примерах. Первая команда выполняет ортогональное объединение:

SELECT * FROM titles t, titleauthor ta

Возвращаются все записи из таблиц title и titleauthor. Общее число возвращаемых записей равно количеству записей в title, умноженному на количество записей в titleauthor. Следующая команда выполняет внутреннее объединение:

SELECT * FROM titles t, titleauthor ta
WHERE t.title_id = ta.title_id

Команда возвращает только те записи, в которых содержимое title_id совпадает в таблицах titles и titleauthor. Последний пример демонстрирует внешнее объединение:

SELECT * FROM titles t, titleauthor ta
WHERE t.title_id *= ta.title_id -- внешнее объединение

Команда возвращает все записи titles даже в том случае, если для title_id не находится соответствующего значения title_id в таблице titleauthor. Расширенные объединения TSQL являются традиционным способом связывания таблиц; новые команды SQL рекомендуется записывать в стандарте ANSI.


 

Добавить комментарий


Защитный код
Обновить