SQL Query停止工作,无法弄清楚原因

时间:2017-01-05 10:02:59

标签: sql forms ms-access

基本上我使用MS Access 2013从API导入分配给特定组的所有活动工作项,并将数据选择为2个新表(请求和请求_任务)。

然后,我有一个来自查询的表单,从2个表中选择特定字段。

直到昨天它没有任何问题,没有任何改变。

所有数据都显示在2个表中,因此从API导入工作正常。

当查询从2个表中选择数据时(已经填充了正确的数据),查询只返回来自Requests表的数据,其中包含空白字段而不是Request_Tasks中的数据。

奇怪的是,在28个活动工作项中,它正确返回24个,最后4个有问题。

添加到群组中的每个新任务也都存在问题。

查询如下。

SELECT 
Request_Tasks.RQTASK_Number, 
Request_Tasks.Request_Number, 
Requests.Task, Requests.Entity, 
Request_Tasks.Description, 
Request_Tasks.Request_Status, 
Requests.Requested_for_date, 
Request_Tasks.Work_On_Date, 
Request_Tasks.Estimated_Time, 
Request_Tasks.Actual_Time_Analysis, 
Request_Tasks.Offers_Built, 
Request_Tasks.Number_of_links_Opened, 
Request_Tasks.Number_of_Links_Extended, 
Request_Tasks.Number_Of_links_closed, 
Request_Tasks.Build_Allocated_to, 
Request_Tasks.Buld_Review_Allocated_to, 
Request_Tasks.Keying_Allocated_to, 
Request_Tasks.Keying_Approval_allocated_to, 
Request_Tasks.Actual_Build_Time, 
Request_Tasks.Actual_Stakeholder_Support, 
Request_Tasks.Task_Completed_Date

FROM Request_Tasks 

RIGHT JOIN Requests 
  ON Request_Tasks.Request_Number = Requests.Request_Number

WHERE (((Request_Tasks.Task_Completed_Date)>=Date() 
Or (Request_Tasks.Task_Completed_Date) Is Null) 
AND ((Requests.Task)<>"7" 
And (Requests.Task)<>"8" And (Requests.Task)<>"9")) 
OR (((Request_Tasks.Task_Completed_Date)>=Date() 
Or (Request_Tasks.Task_Completed_Date) Is Null) 
AND ((Requests.Task)<>"7" 
And (Requests.Task)<>"8" 
And (Requests.Task)<>"9"))

ORDER BY Request_Tasks.Work_On_Date Is Null DESC , Request_Tasks.Work_On_Date, Requests.Entity Is Null DESC , Requests.Task;

任何帮助都会很棒。

感谢。

1 个答案:

答案 0 :(得分:0)

查询使用RIGHT JOIN,这意味着即使Requests表中没有相应的条目,也始终会报告来自Request_tasks表的行。

这里有一个完整的例子http://www.w3schools.com/Sql/sql_join_right.asp

在您的情况下,很可能在数据加载/ API期间发生了某些更改,并且未填充Request_tasks表。这就是你看到该表中字段的空白数据的原因。

解决方案

  • 手动检查Request_tasks表中的4个错误记录的数据。
  • 确保两个表request_number中的键都匹配,包括数据类型和任何前导空格/不可打印字符(如果它们是字符串类型的数据),用于错误记录。

查询看起来很好,更多的是基于问题陈述的数据问题。