【问题标题】:select data from more than 1 table从多个表中选择数据
【发布时间】:2014-01-05 01:12:34
【问题描述】:

我将 access 用作我的数据库,但在尝试让我的查询选择正确的数据时遇到了麻烦。目前,我的查询似乎正在返回表中的所有记录,而对于 WHERE 子句中的这个特定值,它应该只返回 1。

这个想法是根据 WHERE 子句中的值使用“请求框”表,并使用这些值从“框”表中提取数据。如果有人能指出我的新手错误,我将不胜感激。我想补充一点,我继承了这个数据库并且没有选择更改它。非常感谢

我的数据库设置如下。

请求框

要求没有

盒子

盒子

盒子

客户参考

sql = "SELECT [Request Boxes].[Request no], [Request Boxes].Box, Boxes.Box, Boxes.CustRef " &
                  "FROM [Request Boxes], Boxes WHERE [Request Boxes].[Request no] = '" & item & "'"

更新代码:

sql = "SELECT [Request Boxes].[Request no], [Request Boxes].Box, Boxes.Box, Boxes.CustRef " &
                  "FROM [Request Boxes] INNER JOIN Boxes ON [Request Boxes].Box = Boxes.Box " &
                  "WHERE ((([Request Boxes].[Request no]) = '" & item & "' )" &
                  "AND ([Request Boxes].[Customer] = '" & customer2 & "') AND (Boxes.Status = '" & status & "'))"

【问题讨论】:

    标签: vb.net visual-studio-2010 visual-studio ms-access


    【解决方案1】:

    您正在使用 FROM 子句连接这两个表...

    FROM [Request Boxes], Boxes
    

    这意味着您将获得所有Boxes 行,附加到您正确选择的Request Boxes 行。要选择 Boxes 行匹配,请将 ON 子句添加到 FROM...

    FROM [Request Boxes], Boxes ON [Request Boxes].[Box] = [Boxes].[Box]
    

    这将确保只有匹配的 Boxes 行附加到 [Request Boxes] 行。

    【讨论】:

    • 布赖恩,只有 1 个问题。由于我更新的代码中的这一行 (Boxes.Status = '" & status & "'),查询失败。如果我删除线,那么它显示正常。我已经调试过了,我知道正在传递正确的值。我哪里错了。谢谢
    • 一点建议,在 vb.net 或 C# 中使用 Sql Queries 并不是那么好。最好将这些查询写入 SQL Server 的存储过程并从您的代码中调用它们。
    • @user1532468,您的状态是数字吗?如果是这样,你不想要单引号。
    • @Nidzaaaa 感谢您的提醒。有没有什么好的 tuts 供 SP 访问。谢谢
    • @user1532468 你会在THIS POST找到一个很好的答案
    猜你喜欢
    • 2021-02-06
    • 2020-07-04
    • 2016-06-28
    • 2012-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多