Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 多个内部子查询未按预期返回_C#_Asp.net_Sql Server - Fatal编程技术网

C# 多个内部子查询未按预期返回

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

下面是我的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应用程序,并尝试使用此数据执行以下操作:

  • 在外部ASP中继器中显示计划\ U日期
  • 然后使用Employee_Schedule表中的FK显示作业标题(来自My_Job_Type表)
将显示所有作业,而不是显示与以下日期相关的作业

这是我当前的SQL(显示“侍者”、“驱动程序”和“总线”):

以下是我的电流输出:

以下是当前数据:

环境管理计划表\u日期开始\u时间结束\u时间环境管理计划作业\u Id

1 2017年06月03日00:00:00 2017年06月03日09:00:00 2017年06月03日10:00:00 5 2

2017年06月03日00:00:00 2017年06月03日11:30:00 2017年06月03日12:30:00 6 1

2017年03月06日00:00:00 2017年03月06日14:00:00 2017年03月06日15:00:00 5 3

2017年06月03日00:00:00 2017年06月03日12:00:00 2017年06月03日13:00:00 4 2

2017年06月03日00:00:00 2017年06月03日12:15:00 2017年06月03日15:15:00 4 2

作业类型\u Id作业\u标题

1个服务员

2司机

3巴士


据我所知,与嵌套的不相关子查询相比,您似乎只需要一个
内部联接

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