匹配访问中几个表的记录

时间:2014-04-04 03:06:48

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

我是新手。希望你们能解决我的问题。

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

的示例:

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

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

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

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

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

客户ID |购买日期2001 |购买时间2001 |购买项目2001 |

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

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

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

2 个答案:

答案 0 :(得分:0)

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

Customer ID | Purchased Date| Purchased Time | Item Purchased

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

答案 1 :(得分:0)

我不认为你想加入这些桌子。我相信你想要的是一个" all all"查询。

鉴于此数据集......

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

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