Подзапросы с использованием Select - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть две таблицы Shifts и Leaves

Таблица: Shifts имеет следующие поля:

Id, ShiftName,

Таблица: Листья имеют следующие поля:

EmpId, Shiftid, ApplyDate, DateFrom, DateTo

Я хочу выбрать ShiftName из таблицы Shifts на основе Shiftid из Листья таблицы.

Я пытался:

select tbl_Sm.ShiftName in (select Shiftid from Leaves tbl_Lm where tbl_Sm.Id = tbl_Lm.Shiftid)
from Shifts tbl_Sm

Но это дает мне эту ошибку:

enter image description here

Каков будет правильный подход?

Ответы [ 2 ]

1 голос
/ 21 февраля 2020

Вы, кажется, запрашиваете его задом наперед, если вы хотите ShiftName для записей Leaves, вам нужно запросить листья, сдвиги подзапроса, например

select
  (select tbl_sm.ShiftName from Shifts tbl_Sm where tbl_Sm.Id = tbl_Lm.ShiftId)
from Leaves tbl_Lm

Демонстрация:

declare @Shifts table (ShiftName varchar(128), id int identity(1,1))
declare @Leaves table (ShiftId int)

insert into @Shifts(ShiftName)
  select 'Day'
  union all select 'Night'

insert into @Leaves(ShiftId)
  select 1
  union all select 2

select
  (select tbl_sm.ShiftName from @Shifts tbl_Sm where tbl_Sm.Id = tbl_Lm.ShiftId)
from @Leaves tbl_Lm

Результаты:

ShiftName
---------
Day
Night
1 голос
/ 21 февраля 2020

Вы можете использовать inner join для достижения этого

select s.ShiftName -- l.EmpId, l.Shiftid, 
from Leaves l
inner join Shifts s on s.Id = l.Shiftid
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...