Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вывод двух связанных таблиц в одну  [new]
Kaktyc007
Member

Откуда:
Сообщений: 3
У меня есть две таблицы Сотрудники и Ремонт:
CREATE TABLE [dbo].[Сотрудники] (
    [ИдСотрудника] INT           NOT NULL,
    [Фамилия]      NVARCHAR (50) NULL,
    [Имя]          NVARCHAR (50) NULL,
    [Отчество]     NVARCHAR (50) NULL,
    [Отдел]        NVARCHAR (50) NULL,
    [Должность]    NVARCHAR (50) NULL,
    [Телефон]      NVARCHAR (50) NULL,
    PRIMARY KEY CLUSTERED ([ИдСотрудника] ASC)
);

CREATE TABLE [dbo].[Ремонт] (
    [ИдРемонта]          INT            NOT NULL,
    [ИдСотрудника]       INT            NULL,
    [Дата и время]       SMALLDATETIME  NULL,
    [Проделанная работа] NVARCHAR (MAX) NULL,
    PRIMARY KEY CLUSTERED ([ИдРемонта] ASC),
    CONSTRAINT [FK_Ремонт_ToTable] FOREIGN KEY ([ИдСотрудника]) REFERENCES [dbo].[Сотрудники] ([ИдСотрудника])
);

Мне нужно отобразить их в одной таблице, прочитав Главу 7. Соединение таблиц тута https://metanit.com/sql/sqlserver/7.1.php
Возник вопрос, в чем разница в неявном соединении, во внешнем и внутреннем соединение?
И вообще каким способом лучше соединять между собой две связанные таблицы в одну?
23 май 19, 22:25    [21892530]     Ответить | Цитировать Сообщить модератору
 Re: Вывод двух связанных таблиц в одну  [new]
Kaktyc007
Member

Откуда:
Сообщений: 3
Выполнил
Неявное соединение таблиц
Select * 
From Ремонт, Сотрудники 
Where Ремонт.ИдСотрудника=Сотрудники.ИдСотрудника 


Внутреннее соединение таблиц INNER JOIN
Select Ремонт.ИдРемонта, Ремонт.ИдОборудования, Сотрудники.Фамилия, Ремонт.[Дата и время] 
From Ремонт 
join Сотрудники on Сотрудники.ИдСотрудника=Ремонт.ИдСотрудника 


внешнее соединение или OUTER JOIN
Select ИдРемонта, ИдОборудования, Фамилия, [Дата и время] 
From Ремонт LEFT JOIN Сотрудники 
on Ремонт.ИдСотрудника=Сотрудники.ИдСотрудника

Результат один и тот же: https://imgur.com/azAq8tk
Дак в чем же разница?

К сообщению приложен файл. Размер - 7Kb
23 май 19, 23:09    [21892555]     Ответить | Цитировать Сообщить модератору
 Re: Вывод двух связанных таблиц в одну  [new]
NetObserver
Member

Откуда:
Сообщений: 640
Kaktyc007,

1.Неяное соединение = внутренние соединение,
Просто синтаксис разный.

2.Если будет запись в таблице Ремонт, а Сотрудника НЕ найдется, то

Left join - ты это увидишь - в полях Сотрудники будет Null.
Inner join - ты этого не увидишь, строка из Ремонта не попадет в выборку.
24 май 19, 02:04    [21892593]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить