【问题标题】:MySQL Joining Four Tables with Foreign Key SELECT Statement Rejecting ThirdMySQL连接四个表,外键SELECT语句拒绝第三个
【发布时间】:2017-04-15 12:48:21
【问题描述】:

不确定我是否完全正确地执行此操作,因为这是我第一次使用外键。

我正在尝试在四张桌子上做一个JOIN

  • inventory_detail_history
  • 出货量

还有这两个持有外键的

  • shipment_details(批发)
  • shipment_ids

我在 shipment_details id 字段上应用了外键约束。 这引用了我的 shipment_ids 表上的 shipment_id 列。

shipment_details 具有以下列:idQuantityPurchasedUnitCostFreightTotalCustomDutiesTotal

shipment_ids 具有以下列: idSKUshipment_id

这个想法是尝试通过将多个 SKU 应用于特定的 shipment_id(或者,我猜是shipment_details id)来规范我的数据库。

inventory_detail_historyshipments 两个表上执行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.idshipment_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'

有人可以提供任何帮助、提示以获得适当的响应吗?

【问题讨论】:

    标签: mysql join


    【解决方案1】:

    在查询末尾而不是在第二次连接之后应用 where 子句应该可以解决错误。

    【讨论】:

    • 你是对的,哈哈。我很接近,所以这很好。谢谢你:)
    • 很高兴我能帮上忙。请把答案标记为正确:)
    猜你喜欢
    • 1970-01-01
    • 2013-08-13
    • 2011-09-18
    • 2011-02-18
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多