【问题标题】: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])))

有人可以帮我吗?

【问题讨论】:

    标签: database ms-access


    【解决方案1】:

    由于某些原因,您的 SQL 无效。

    1. IN() 应该被取出。它是用于比较的表达式,位置不正确,不会更改结果数据集。
    2. 您没有调用表 Information 和表 Student,但您在 WHERE 语句中比较两者。
    3. SELECT [class] 不明确。 [class] 存在于两个表中,因此您需要选择要查看哪个表的值。如果是学生表,那么应该是SELECT [student].[class] 或许您想查看这两个值,以便了解它们的不同之处。
    4. 使用连接,它们更易于阅读和理解

    因此,由于我不完全理解您的问题,因此可能无法为您提供所需内容的编辑如下:

    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 加入。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多