下面是我的SQL表:多个内部子查询没有返回预期
CREATE TABLE [dbo].[My_Employee_Schedule] (
[Emp_Sch_Id] INT IDENTITY (1, 1) NOT NULL,
[Schedule_Date] DATETIME NULL,
[Start_Time] DATETIME NULL,
[End_Time] DATETIME NULL,
[Emp_ID] INT NULL,
[Job_ID] INT NULL,
PRIMARY KEY CLUSTERED ([Emp_Sch_Id] ASC),
FOREIGN KEY ([Emp_ID]) REFERENCES [dbo].[My_Employee] ([Employee_Id]) ON DELETE CASCADE,
FOREIGN KEY ([Job_ID]) REFERENCES [dbo].[My_Job_Type] ([Job_Type_Id]) ON DELETE CASCADE
);
CREATE TABLE [dbo].[My_Job_Type] (
[Job_Type_Id] INT IDENTITY (1, 1) NOT NULL,
[Job_Title] NVARCHAR (50) NOT NULL,
PRIMARY KEY CLUSTERED ([Job_Type_Id] ASC)
);
我创建ASP.NET C#web应用程序,并正尝试做与此数据如下:
在 E采用的FK- 显示Schedule_Date在外ASP中继器
- 然后显示JOB_TITLE(FROM THE My_Job_Type表) mployee_Schedule表。
而不是显示与下面几天连接的作业,所有作业正在显示。
这里是我当前的SQL(这是显示 “服务员”, “驱动程序” & “布瑟”):
SELECT Job_Title
FROM My_Job_Type
WHERE Job_Type_Id IN (
SELECT Job_Id
FROM My_Employee_Schedule
WHERE Schedule_Date IN (
SELECT DISTINCT CAST(Schedule_Date AS DATE) As Schedule_Date
FROM My_Employee_Schedule
WHERE Start_Time BETWEEN @startReportDate AND @endReportDate))
这里是当前数据:
Emp_Sch_Id Schedule_Date START_TIME END_TIME EMP_ID JOB_ID
1 2017年3月6日00:00:00 2017年3月6日九点00分00秒2017年3月6日10:00:00 5 2
2 2017年3月6日00:00 :00 03/06/2017 11:30:00 03/06/2017 12:30:00 6 1
3 03/06/2017 00:00:00 03/06/2017 14:00:00 03/06/2017 15:00:00 5 3
4 03/06/2017 00:00:00 03/06/2017 12:00:00 03/06/2017 13:00:00 4 2
5 03/06/2017 00:00:00 03/06/2017 12:15:00 03/06/2017 15:15:00 4 2
Job_Type_Id JOB_TITLE
1服务员
2驱动
3布瑟
在My_Job_Type表中,“Waiter”,“Driver”和“Busser”是唯一的行。我认为这个当前的SQL语句显示了每个div中的所有行。但是,Job_Id [外键]在Employee_Schedule表中的每一行附加了一个特定的Job。我不想在每个div中显示,而只想显示其FK与Employee_Schedule行关联的作业。 – user2911539
例如,只有_Waiter_应显示在星期六下方,因为Schedule_Date的_Employee_Schedule_行是3/6/2017,其** Job_ID **等于1 – user2911539
您可以将数据发布到这些表中吗?没有它,我们很难知道结果是否正确。 – scsimon