使用查询检查记录
Posted
技术标签:
【中文标题】使用查询检查记录【英文标题】:Checking records with query 【发布时间】:2016-12-06 14:15:50 【问题描述】:我在一所学校做 IT。我们使用基于 Access 中的数据库的程序。父母填写姓名、儿子或女儿的姓名和班级 然后为我们提供有关他们孩子的额外信息。这一定是正确的,尤其是类。
这就是我放置控件(查询检查类)的原因。我有 1 个表格,我可以在其中找到孩子的所有信息(表格“学生”) 另一个表('信息')是父母填写的内容。现在我想查看所有父母犯了错误的学生:
这是我的查询,它不起作用:
In (SELECT [class] FROM [information] WHERE (([information].[frontname] = [student].[frontname]) AND ([information].[class] <> [student].[class])))
有人可以帮我吗?
【问题讨论】:
【参考方案1】:由于某些原因,您的 SQL 无效。
IN()
应该被取出。它是用于比较的表达式,位置不正确,不会更改结果数据集。
您没有调用表 Information 和表 Student,但您在 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];
【讨论】:
您在复制和粘贴方面犯了一个错误,没有第二个ON
加入。 :)以上是关于使用查询检查记录的主要内容,如果未能解决你的问题,请参考以下文章