【问题标题】:Matching records from several tables in access匹配访问中多个表的记录
【发布时间】:2014-05-16 04:13:06
【问题描述】:

我是访问新手。希望大家能帮我解答一下我的问题。

我有几张按年份存储记录的表。所有表都有相同的字段集。我想知道是否可以搜索特定的客户 ID,并在我的数据库中的表中生成他所有购买的记录。一年内,他可能有几条记录,而另一年他可能没有。如果我使用 join 函数,它似乎无法产生我想要的结果。

例子:

表 1 - 2001 字段如下: 客户编号 |购买日期 |购买时间 |购买的物品 |

表 2 - 2002 年 客户编号 |购买日期 |购买时间 |购买的物品 |

表 3 - 2003 年 客户编号 |购买日期 |购买时间 |购买的物品 |

表 4 - 2004 年 客户编号 |购买日期 |购买时间 |购买的物品 |

我希望结果如下(这意味着所有在同一列下编译同一类型,而不是为特定年份创建新列):

客户 ID |购买日期 2001 |购买时间 2001 | 2001 年购买的物品|

客户 ID |购买日期 2002 |购买时间 2002 | 2002 年购买的物品|

客户 ID |购买日期 2003 |购买时间 2003 | 2003 年购买的物品|

客户 ID |购买日期 2004 |购买时间 2004 | 2004 年购买的物品|

【问题讨论】:

    标签: sql ms-access vba ms-access-2010


    【解决方案1】:

    我认为您不想加入这些表。我相信您想要的是“联合所有”查询。

    鉴于此数据集...

    Table 2001
    CustId | Item
    101      Widget A
    101      Gizmo B
    201      Widget A
    201      Wedge C
    
    Table 2002
    CustId | Item
    101      Widget A
    201      Widget A
    201      Wedge C
    201      Wedge C
    
    Table 2003
    CustId | Item
    101      Widget A
    101      Gizmo B
    101      Gizmo B
    201      Gizmo B
    

    查询看起来像这样...

    SELECT item
    FROM 'Table 2001'
    WHERE CustId = 101
    
    UNION ALL
    
    SELECT item
    FROM 'Table 2002'
    WHERE CustId = 101
    
    UNION ALL
    
    SELECT item
    FROM 'Table 2003'
    WHERE CustId = 101
    

    确保为每个单独的查询以相同的顺序指定相同的列,以便数据在查询结果中正确匹配。

    【讨论】:

      【解决方案2】:

      您最好创建一个新表,在列标题中省略年份:

      Customer ID | Purchased Date| Purchased Time | Item Purchased
      

      您可以通过查询合并数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-26
        • 2012-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多