Database 使用查询检查记录

Database 使用查询检查记录,database,ms-access,Database,Ms Access,我在学校做这件事。我们在Access中使用一个基于数据库的程序。父母填写姓名、儿子或女儿的姓名和班级 然后给我们提供关于他们孩子的额外信息。这必须是正确的,尤其是在课堂上 这就是为什么我在类中设置了一个控件查询检查。我有一个表,可以在其中找到子表“student”的所有信息 另一个表格“信息”是家长填写的内容。现在我想看到所有父母犯错的学生: 这是我的查询,它不起作用: In (SELECT [class] FROM [information] WHERE (([information].[fr

我在学校做这件事。我们在Access中使用一个基于数据库的程序。父母填写姓名、儿子或女儿的姓名和班级 然后给我们提供关于他们孩子的额外信息。这必须是正确的,尤其是在课堂上

这就是为什么我在类中设置了一个控件查询检查。我有一个表,可以在其中找到子表“student”的所有信息 另一个表格“信息”是家长填写的内容。现在我想看到所有父母犯错的学生:

这是我的查询,它不起作用:

In (SELECT [class] FROM [information] WHERE (([information].[frontname] = [student].[frontname]) AND ([information].[class] <> [student].[class])))

有人能帮我吗?

由于以下几个原因,您的SQL无效

应该把里面的东西拿出来。这是一个用于比较的表达式,其位置不正确,并且不会改变结果数据集。 您不调用表信息和表学生,但在WHERE语句中比较这两个。 选择[class]不是显式的。[class]存在于两个表中,因此您需要选择要查看的表值。如果是学生表,那么应该选择[student].[class],也许您希望看到这两个值,这样您就可以看到它们之间的差异。 使用联接,它们更容易阅读和理解 因此,下面是一个编辑,它可能无法提供您想要的内容,因为我不完全理解您的问题:

SELECT [student].[class], [information].[class]
FROM [Information]
INNER JOIN [Student]
ON [information].[frontname] = [student].[frontname]
WHERE [information].[class] <> [student].[class];
然而,你会得到奇怪的数据,因为你只是比较前面的名字,所以如果这所学校有两个De Vlieger's,查询将不知道返回哪一个

因此,假设两个表中都存在backname、lastname或NastName字段,则需要进一步编辑:

SELECT [student].[class], [information].[class]
FROM [Information]
INNER JOIN [Student]
ON [information].[frontname] = [student].[frontname]
AND [Information].[surname] = [student].[surname]
WHERE [information].[class] <> [student].[class];

您在复制和粘贴方面犯了错误,在连接中没有第二次: