【发布时间】:2017-04-15 12:48:21
【问题描述】:
不确定我是否完全正确地执行此操作,因为这是我第一次使用外键。
我正在尝试在四张桌子上做一个JOIN。
- inventory_detail_history
- 出货量
还有这两个持有外键的
- shipment_details(批发)
- shipment_ids
我在 shipment_details id 字段上应用了外键约束。
这引用了我的 shipment_ids 表上的 shipment_id 列。
shipment_details 具有以下列:id、QuantityPurchased、UnitCost、FreightTotal、CustomDutiesTotal
shipment_ids 具有以下列:
id、SKU、shipment_id
这个想法是尝试通过将多个 SKU 应用于特定的 shipment_id(或者,我猜是shipment_details id)来规范我的数据库。
在inventory_detail_history 和shipments 两个表上执行INNER JOIN 没问题:
SELECT Shipments.ListingSKU, Shipments.SKU, idh.Quantity, Shipments.OrderIdentifier, idh.Price, Shipments.SalesTax, Shipments.ShippingCharge, Shipments.ShipmentCost, idh.FinalValueFee, idh.PayPalFee
FROM Inventory_detail_history AS idh
INNER JOIN Shipments ON idh.OrderIdentifier = Shipments.OrderIdentifier
WHERE Shipments.SKU = 'SKU-NAME';
这会产生如下输出:
但现在我需要将其与我的 shipment_details 表连接起来,该表引用了来自 shipment_details.id 和 shipment_ids.shipment_id 关系的 SKU。
我可以单独做。
SELECT sd.PurchaseQuantity, sd.UnitCost, sd.FreightTotal, sd.CustomDutiesTotal, sids.SKU, sids.shipment_id
FROM shipment_details AS sd
INNER JOIN shipment_ids AS sids on sd.id = sids.shipment_id
WHERE sids.SKU = 'SKU-NAME';
产生如下输出:
但是,我需要将所有这些信息放在一行中。
这是我迄今为止最好的镜头。
SELECT Shipments.ListingSKU, Shipments.SKU, idh.Quantity, Shipments.OrderIdentifier, idh.Price, Shipments.SalesTax, Shipments.ShippingCharge, Shipments.ShipmentCost, idh.FinalValueFee, idh.PayPalFee, sd.PurchaseQuantity, sd.UnitCost, sd.FreightTotal, sd.CustomDutiesTotal, sids.SKU, sids.shipment_id
FROM Inventory_detail_history AS idh
INNER JOIN Shipments
ON idh.OrderIdentifier = Shipments.OrderIdentifier
WHERE Shipments.SKU = 'SKU-NAME'
INNER JOIN shipment_ids AS sids
ON sids.SKU = 'SKU-NAME'
INNER JOIN shipment_details AS sd
ON sd.id = sids.shipment_id
但是我遇到了一个错误
#1054 - “字段列表”中的未知列“sd.PurchaseQuantity”
请注意,此列无关紧要,它只是拒绝第三个表选择。
如果我把它改成SELECT . . . . idh.PayPalFee, sd.UnitCost, sd.PurchaseQuantity
它会说#1054 - Unknown column 'sd.UnitCost' in 'field list'
有人可以提供任何帮助、提示以获得适当的响应吗?
【问题讨论】: