C# 多个内部子查询未按预期返回
下面是我的SQL表:C# 多个内部子查询未按预期返回,c#,asp.net,sql-server,C#,Asp.net,Sql Server,下面是我的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
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应用程序,并尝试使用此数据执行以下操作:
- 在外部ASP中继器中显示计划\ U日期
- 然后使用Employee_Schedule表中的FK显示作业标题(来自My_Job_Type表)
据我所知,与嵌套的不相关子查询相比,您似乎只需要一个
内部联接
select distinct
t.Job_Title
from
My_Job_Type t
inner join
My_Employee_Schedule s on
s.Job_ID = t.Job_Type_ID
where
s.Schedule_Date between @startReportDate and @endReportDate
在My_Job_Type表中,“服务员”、“司机”和“巴士司机”是唯一的行。我认为当前的SQL语句显示了每个div中的所有行。但是,Job_Id[外键]将特定作业附加到Employee_Schedule表中的每一行。我不想在每个div中显示,我只想显示FK与员工计划行关联的作业。例如,周六下只应显示服务员,因为员工计划行的计划日期为2017年3月6日,其作业ID等于1。您可以在这些表中发布数据吗?如果没有它,我们很难知道结果是否正确。@scsimon Hi,我已经发布了上面的表数据。根据变量设置的不同,我发布的查询应该返回正确的结果,但是您的数据集中只有3/6,并且显示的日期超出了此范围。非常感谢您的解决方案。如果我现在想在职务下方显示员工的姓名,是否需要另一个加入?顺便说一句,Employee_Name是Employee表中的一列,上面的Emp_ID是FK。可能是因为我在您提供的任何表中都没有看到Employee Name。我猜它会使用Emp\U ID列加入My\u Employee\u Schedule表中……如果我在上面发布我的附加表,您是否能够更新您的答案以包含解决方案?因为它仍然属于多个子查询的范畴?@user2911539 Stack Overflow建议打开一个新问题,并提供一个指向该问题的参考链接,否则线程将永远不会结束,这将变成一个博客而不是一个问答论坛。没问题@user2911539,我看到这个问题已经深入到了C#领域和DB之外,很高兴他们能提供帮助。
select distinct
t.Job_Title
from
My_Job_Type t
inner join
My_Employee_Schedule s on
s.Job_ID = t.Job_Type_ID
where
s.Schedule_Date between @startReportDate and @endReportDate