Объединение, это одновременное извлечение информации из двух или нескольких таблиц и отображение этих данных в одном результирующем наборе.
RIGHT JOIN — правое внешнее объединение возвращает все строки из правой таблицы, при отсутствии соответствия со столбцами в левой таблице, место в результирующем наборе будет заполнено значениями NULL.
RIGHT JOIN — правое внешнее объединение возвращает все строки из правой таблицы, при отсутствии соответствия со столбцами в левой таблице, место в результирующем наборе будет заполнено значениями NULL.
Синтаксис
SELECT имя_столбцa(ов) FROM имя_таблицы_right RIGHT JOIN имя_таблицы_left ON имя_таблицы_right.имя_столбцa = имя_таблицы_left.имя_столбцa
Script.sql
--создание базы CREATE DATABASE zzz GO --выбор базы USE zzz GO /*правая таблица*/ --создание таблицы CREATE TABLE TRight ( IDRight INT NOT NULL PRIMARY KEY IDENTITY(1, 1), IDLeft INT NULL, Name NVARCHAR(50) NOT NULL ) --вставляем данные INSERT INTO TRight(IDLeft, Name) VALUES (1, N'Один'), (2, N'Два'), (3, N'Три') /*левая таблица*/ --создание таблицы CREATE TABLE TLeft ( IDLeft INT NOT NULL PRIMARY KEY IDENTITY(1, 1), Name NVARCHAR(50) NOT NULL ) --вставляем данные INSERT INTO TLeft(Name) VALUES (N'One'), (N'Two'), (N'Three'), (N'Four'), (N'Five') SELECT TRight.IDRight, TRight.IDLeft, TRight.Name, TLeft.IDLeft, TLeft.Name FROM TRight RIGHT JOIN TLeft ON TRight.IDLeft = TLeft.IDLeft
--создание базы CREATE DATABASE zzz GO --выбор базы USE zzz GO /*правая таблица*/ --создание таблицы CREATE TABLE TRight ( IDRight INT NOT NULL PRIMARY KEY IDENTITY(1, 1), IDLeft INT NULL, Name NVARCHAR(50) NOT NULL ) --вставляем данные INSERT INTO TRight(IDLeft, Name) VALUES (1, N'Один'), (2, N'Два'), (3, N'Три') /*левая таблица*/ --создание таблицы CREATE TABLE TLeft ( IDLeft INT NOT NULL PRIMARY KEY IDENTITY(1, 1), Name NVARCHAR(50) NOT NULL ) --вставляем данные INSERT INTO TLeft(Name) VALUES (N'One'), (N'Two'), (N'Three'), (N'Four'), (N'Five') SELECT TRight.IDRight, TRight.IDLeft, TRight.Name, TLeft.IDLeft, TLeft.Name FROM TRight RIGHT JOIN TLeft ON TRight.IDLeft = TLeft.IDLeft