我在学校做IT。我们使用基于Access中的数据库的程序。父母填写他们的儿子或女儿的名字,姓名和班级 然后为我们提供关于他们孩子的额外信息。这必须是正确的,尤其是班级。
这就是我放置一个控件(查询检查类)的原因。我有一张桌子,我可以找到孩子的所有信息(表'学生') 另一张桌子(“信息”)是父母填写的内容。现在我希望看到所有父母犯错误的学生:
这是我的查询,它不起作用:
In (SELECT [class] FROM [information] WHERE (([information].[frontname] = [student].[frontname]) AND ([information].[class] <> [student].[class])))
有人可以帮助我吗?
答案 0 :(得分:0)
由于某些原因,您的SQL无效。
IN()
应该被取出。它是比较中使用的表达式,并且放置位置不正确,无法更改结果数据集。WHERE
声明中对这两者进行了比较。SELECT [class]
不明确。两个表中都存在[class]
,因此您需要选择要查看的表的值。如果它是学生表,那么它应该是SELECT [student].[class]
也许你想看到这两个值,所以你可以看到它们的区别。因此,编辑可能无法满足您的需求,因为我不完全了解您的问题,如下所示:
SELECT [student].[class], [information].[class]
FROM [Information]
INNER JOIN [Student]
ON [information].[frontname] = [student].[frontname]
WHERE [information].[class] <> [student].[class];
但是,你会得到奇怪的数据,因为你只是比较前面的名字,所以如果在这所学校有两个De Vlieger,那么查询将不知道要返回哪一个。
所以进一步编辑,假设两个表中都存在“backname”或“lastname”或“surname”字段:
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];