【问题标题】:MS Access SQL: Return data from 1 table based on a summed total in another tableMS Access SQL:根据另一个表中的总和从一个表返回数据
【发布时间】:2016-11-09 08:50:00
【问题描述】:

我有 2 个 MS Access 表:

Table_A(2 个字段)

MC    Description           
1234   Item_1             
2345   Item_2            
3456   Item_3 

Table_B(3 个字段)

MC    Location  Quantity  
1234   AAA        0  
1234   BBB        0  
1234   CCC        1  
2345   AAA        0  
2345   BBB        0  
2345   CCC        0  
3456   AAA        1  
3456   BBB        1  
3456   CCC        1 

我正在尝试从 Table_A 返回项目,其中 Table_B 中的数量总和(对于给定的 MC)> 0

根据上述数据,将返回以下内容。

MC 说明
1234---项目_1
3456---项目_3

如果查询更改为 = 0,则只会返回 MC 2345。
如果查询更改为 = 1,则只会返回 MC 1234。

我当前对 = 0 查询的尝试如下;但是,如果使用上述数据,它会返回 MC 1234 和 2345,而正确的返回值仅为 2345

Query1 = "SELECT mat_MaterielCode, mat_DescriptionShort " & _
    "FROM mat_MaterielMaster " & _
    "INNER JOIN mml_MaterielMasterLocation " & _
    "ON mat_MaterielMaster.mat_MaterielCode = mml_MaterielMasterLocation.mml_MaterielCode " & _
    "WHERE (([mat_MaterielMaster]![mat_SpareClass] IN ('OBS')) AND ([mml_MaterielMasterLocation]![mml_SOH]=0)) " & _
    "GROUP BY mat_MaterielMaster.mat_MaterielCode, mat_MaterielMaster.mat_DescriptionShort "

【问题讨论】:

    标签: sql ms-access vba


    【解决方案1】:

    你可能会寻找这个选择命令

    SELECT MC,Description
    FROM Table_A 
    WHERE MC IN (SELECT MC FROM Table_B GROUP BY MC HAVING SUM(Quantity) > 0)
    

    【讨论】:

      【解决方案2】:

      为什么不使用查询设计器?

      首先在 Table_B 上创建基本查询,按 MC 和 Sum(Quantity) > 0 分组。

      然后将结果与 MC 上的 Table_A 连接起来。

      当您完成这项工作时,您可以从查询中获取 SQL,并从中在 VBA 中构建动态 SQL(第一个查询是连接的一部分)。

      但你似乎想反其道而行之,这不是最好的主意。

      【讨论】:

        猜你喜欢
        • 2023-03-12
        • 2011-04-15
        • 1970-01-01
        • 2020-09-24
        • 2017-03-30
        • 2016-09-14
        • 1970-01-01
        • 2023-03-22
        • 1970-01-01
        相关资源
        最近更新 更多