访问表多联接问题

时间:2018-08-13 08:26:18

标签: database ms-access foreign-keys ms-office

我可以在Access数据库的两个表之间使用两个联接吗?

我有一个客户数据库,我的客户名称出现在两个不同的字段中,我想将客户名称转换为简称,然后在一个字段中的查询中将其返回。

为了解决这个问题,我创建了一个包含所有客户名称及其缩写的第二张表,然后将“ CustName”字段与主表中的“ Customer_Name”字段相关联,在查询中,我返回了我的简称顾客。难题在于,某些客户名称(例如Toyota)出现在“ customer_Plant”字段中,而不是“ customer_Name”字段中(请参见图片)。我想在每个工厂位置使用不同的丰田简称。另一个困难是,除丰田以外,我的原始表中的“ Customer_Plant”字段并非总是填充。

有什么办法可以使用两个不同表之间的多个关系?这样访问查询不仅可以通过“ customer_Name”返回短名称,还可以同时通过“ Customer_Plant”返回短名称。

如果表之间存在一个联接,则访问不允许我将“ Customer_Plant”与“ custPlant”联接。我还有其他方法可以实现这一目标吗?

Tbl_claimdata和tbl_custShortName:

在表之间加入:

当前输出:

1 个答案:

答案 0 :(得分:0)

如果在任何一个或两个表中均未提供植物名称,请考虑:

查询1:Claims_ADJ

  

选择tblCustClaimData.Customer_Name,   tblCustClaimData.Customer_Plant,Nz([Customer_Plant],[Customer_Name])   AS LinkNameClaim FROM tblCustClaimData;

查询2:Short_ADJ

  

选择tblShortCustName.CustName,tblShortCustName.PlantName,   Nz([PlantName],[CustName])AS LinkNameShort,   tblShortCustName.ShortName来自tblShortCustName;

Query3:

  

从“ Short_ADJ”右侧选择“ Customer_Name”,“ Customer_Plant”,“ ShortName”   JOIN Claims_ADJ ON Short_ADJ.LinkNameShort = Claims_ADJ.LinkNameClaim;

Query3不可更新,因此可能仅对报告有用。

因此,也可以在查询(不需要查询2和3)或文本框中进行DLookup:

  

DLookUp(“ ShortName”,“ tblShortCustName”,“ Nz([PlantName],[CustName])='”   &Nz([Customer_Plant],[Customer_Name])&“'”)