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