Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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
MS Access SQL错误_Sql_Ms Access 2010 - Fatal编程技术网

MS Access SQL错误

MS Access SQL错误,sql,ms-access-2010,Sql,Ms Access 2010,此代码应该选择前1个,但它工作不正常。它不是只显示前1条记录,而是显示成吨的记录。这可能是因为我引用了两个表。在另一个代码中,我只有1个,它可以工作。不过我需要参考表上的出勤率,所以我不知道如何解决这个问题。谢谢 SELECT TOP 1 userID FROM attendance, CFRRR WHERE [attendance.Programs] LIKE CFRRR.program AND [attendance.Language] LIKE CFRRR.language AN

此代码应该选择前1个,但它工作不正常。它不是只显示前1条记录,而是显示成吨的记录。这可能是因为我引用了两个表。在另一个代码中,我只有1个,它可以工作。不过我需要参考表上的出勤率,所以我不知道如何解决这个问题。谢谢

SELECT TOP 1 userID 
FROM attendance, CFRRR 
WHERE [attendance.Programs] LIKE CFRRR.program  
AND [attendance.Language] LIKE CFRRR.language 
AND [attendance.Status] = 'Available' 
ORDER BY TS ASC
以下是考勤表字段:userID、username、Supervisor、Category、AttendanceDay、AttendanceTime、Programs、Language、Status、TS

以下是CFRRR的表格字段:CFRRRID、WorkerID、WorkerMail、Workername、Dateassigned、assignedby、RRRmonth、ScheduledDate、scheduledtime、type、ScheduledType、caseid、language、lastname、firstname、Checkedin、Qid、status、CompletedType、comments、actiondate、VerifDuedDate、program


很明显,最后一个表有很多记录。

MS Access中的SELECT TOP与SQL Server中的
SELECT TOP
以及其他数据库中的类似功能不同。它根据排序依据返回最上面的行。然后它继续返回与最后一个值匹配的行。这有时很方便,这就是为什么SQL Server具有此功能,如
SELECT TOP WITH TIES

要解决此问题,您需要包含一个或多个对每个生成的行唯一的列:

SELECT TOP 1 userID 
FROM attendance as a,
     CFRRR 
WHERE a.Programs LIKE CFRRR.program  AND
      a.Language LIKE CFRRR.language  AND
      a.Status = 'Available' 
ORDER BY TS ASC, userId, CFFRID

你能详细说明一下“工作不正常”吗?您期望得到什么样的输出?您得到了什么?请解释“工作不正常”。另外,使用适当的连接。隐式连接已经过时20多年了。你们说得对,对不起,我编辑了我的问题,但我添加了以下内容:当我运行查询时,它不是只显示前1条记录,而是显示了大量记录。另外@ZoharPeled我不太清楚你所说的正确连接是什么意思。我是MS Access的新手,所以我不知道什么是旧样式,什么是新样式。很可能您有许多用户具有相同的TS值?@Ala实际上现在的记录是3、4、5、6。所以没有人有相同的值。谢谢@Gordon Linoff,但我得到了一个语法错误,它突出显示了
CROSS
@Lilly。我忘了MS Access不支持这个关键字,这个关键字是23年前才引入标准SQL的。谢谢@Gordon Linoff,它确实消除了其他用户ID的显示,但它仍然填充了200多条记录,而它应该只有1。@Lilly。将更多列添加到“排序依据”,以便每个结果行都标识一次。如果您编辑您的问题并提供示例数据,则可能可以将其合并到答案中。我更新了我的问题以显示两个表的字段。这些数据是否足以让我们了解需要在回答@Gordon Linoff时纳入哪些内容?