【问题标题】:Microsoft Access How to display information from 1 table for 2 other tablesMicrosoft Access 如何为 2 个其他表显示 1 个表中的信息
【发布时间】:2014-10-22 19:06:11
【问题描述】:

我很难让我的报告正常工作。我有一个 purchaseOrder 表,其中包含 1 个地址 ID,它代表送货地址。与 purchaseOrder 关联的供应商也有一个地址 ID,它表示帐单地址。

如果您对我的解释感到困惑,这是关系。

我想知道如何告诉我的报告地址记录属于 vendor 或 purchaseOrder。任何建议或帮助将不胜感激。

查询的原始SQL,忽略长选择。

SELECT tbl_purchaseOrder.ID, tbl_purchaseOrder.purchaseOrderDate, tbl_vendor.salesContact,   tbl_vendor.phone, tbl_vendor.extension, tbl_vendor.fax, tbl_vendor.vendorNo, tbl_vendor.vendorName, tbl_address.address, tbl_address.city, tbl_address.provinceOrState, tbl_address.postalCode, tbl_address.country, tbl_purchaseOrder.shipVIA, tbl_purchaseOrder.FOB, tbl_purchaseOrder.term, tbl_PODetails.quantityOrder, tbl_rawItemList.ItemSerialCode, tbl_PODetails.dueDate, tbl_PODetails.unitCost, tbl_PODetails.unit, tbl_rawItemList.description, tbl_PODetails.specialInstructions, tbl_purchaseOrder.requistionedBy, [unitCost]*[quantityOrder] AS Total
FROM tbl_rawItemList INNER JOIN (((tbl_address INNER JOIN tbl_purchaseOrder ON tbl_address.ID = tbl_purchaseOrder.addressID) INNER JOIN tbl_vendor ON (tbl_vendor.ID = tbl_purchaseOrder.vendorID) AND (tbl_address.ID = tbl_vendor.addressID)) INNER JOIN tbl_PODetails ON tbl_purchaseOrder.ID = tbl_PODetails.purchaseOrderID) ON tbl_rawItemList.ID = tbl_PODetails.rawItemListID
WHERE (((tbl_purchaseOrder.ID)=[Enter a PO number:]));

【问题讨论】:

  • 您将能够基于给tbl_adress 的别名。您应该有两个别名,因为您要链接到它两次。你能告诉我们查询是什么样的吗?
  • 只是一个快速的想法:你为什么有一个独立的地址表?每个供应商都有自己的地址,每个客户/买家都有自己的地址。您不会通过拥有独立的地址表来节省数据库空间,因为无论如何您都要为每个供应商键入地址.. 在您的情况下:您需要添加两个地址表,一个用于供应商,一个用于采购订单并从中获取地址purchaseorder_address 表
  • @krishKM 当时,这似乎是合乎逻辑的,因为我需要 5 个不同的表中的地址,所以我认为只为它创建 1 个表并为其分配一个 AddressType 会更容易。跨度>
  • @Linger 您想要查询 GUI 或 SQL 格式的图片吗?
  • 实际的sql语句。然后我们可以准确地告诉你如何引用这两个不同的地址。

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


【解决方案1】:

你真正需要做的是链接到tbl_Address两次,如下所示:

这是您的 FROM 子句应如下所示:

FROM ((((tbl_PODetails 
INNER JOIN tbl_rawItemList ON tbl_PODetails.rawItemListID = tbl_rawItemList.ID) 
INNER JOIN tbl_purchaseOrder ON tbl_PODetails.purchaseOrderID = tbl_purchaseOrder.ID) 
INNER JOIN tbl_vendor ON tbl_purchaseOrder.VendorID = tbl_vendor.ID) 
INNER JOIN tbl_address AS POAddress ON tbl_purchaseOrder.AddressID = POAddress.ID) 
INNER JOIN tbl_address AS VendorAddress ON tbl_vendor.AddressID = VendorAddress.ID;

请注意,我链接到tbl_address 两次,我给它们别名POAddress 和VendorAddress。因此,要获取供应商的地址信息,您可以将控件绑定到:VendorAddress.address、VendorAddress.city 等。

您在 SELECT 语句中的地址字段必须更改为:

POAddress.address, POAddress.city, POAddress.provinceOrState, POAddress.postalCode, POAddress.country, VendorAddress.address, VendorAddress.city, VendorAddress.provinceOrState, VendorAddress.postalCode, VendorAddress.country

所以你的完整查询应该是这样的:

SELECT tbl_purchaseOrder.ID, tbl_purchaseOrder.purchaseOrderDate, 
       tbl_vendor.salesContact, tbl_vendor.phone, tbl_vendor.extension, 
       tbl_vendor.fax, tbl_vendor.vendorNo, tbl_vendor.vendorName, 
       tbl_purchaseOrder.shipVIA, tbl_purchaseOrder.FOB, tbl_purchaseOrder.term,   
       tbl_PODetails.quantityOrder, tbl_rawItemList.ItemSerialCode, 
       tbl_PODetails.dueDate, tbl_PODetails.unitCost, tbl_PODetails.unit, 
       tbl_rawItemList.description, tbl_PODetails.specialInstructions, 
       tbl_purchaseOrder.requistionedBy, [unitCost]*[quantityOrder] AS Total, 
       POAddress.address, POAddress.city, POAddress.provinceOrState, 
       POAddress.postalCode, POAddress.country, VendorAddress.address, 
       VendorAddress.city, VendorAddress.provinceOrState, 
       VendorAddress.postalCode, VendorAddress.country
FROM ((((tbl_PODetails 
     INNER JOIN tbl_rawItemList ON tbl_PODetails.rawItemListID = tbl_rawItemList.ID) 
     INNER JOIN tbl_purchaseOrder ON tbl_PODetails.purchaseOrderID = tbl_purchaseOrder.ID) 
     INNER JOIN tbl_vendor ON tbl_purchaseOrder.VendorID = tbl_vendor.ID) 
     INNER JOIN tbl_address AS POAddress ON tbl_purchaseOrder.AddressID = POAddress.ID) 
     INNER JOIN tbl_address AS VendorAddress ON tbl_vendor.AddressID = VendorAddress.ID;
WHERE (((tbl_purchaseOrder.ID)=[Enter a PO number:]));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-06
    • 2019-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多