2017-04-15 5 views
0

私が完全にこれを正しく行っているかどうかはわかりません。外部キーを使用した最初の回りです。MySQL外部キーを使用した4つのテーブルへの結合SELECTステートメントの拒否3番目

私はJOINを4つのテーブルで実行しようとしています。

  • inventory_detail_history
  • 出荷(ホールセール)
  • shipment_ids外部キー

    • shipment_detailsを保持するこれらの二つと共に

shipment_detailsidフィールドに外部キー制約を適用しました。 これはshipment_idsテーブルのshipment_id列を参照しています。 、idQuantityPurchasedUnitCostFreightTotalCustomDutiesTotal

shipment_ids次の列があります:

shipment_detailsは、次の列があり idSKUshipment_id

アイデアは適用することによって、自分のデータベースを正規化する試みであります複数のSKUを特定のshipment_id(または、むしろ、shipment_detailsidと推測します)。二つのテーブルinventory_detail_historyshipmentsINNER 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'; 

これは、このような出力生成:

enter image description here

をしかし、今、私は私でこれに参加する必要がありますshipment_details.idおよびshipment_ids.shipment_id関係からSKUを参照する表。shipment_detailsテーブル。

私はこれを別途行うことができます。そのような出力を生成し

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'; 

enter image description here

はしかし、私は1つの行にすべての情報を配置する必要があります。

これまでのところ私のベストショットです。

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

この列は無関係であることに注意してください、それだけで選択し第三のテーブルを拒否しています。 私はそれは#1054 - Unknown column 'sd.UnitCost' in 'field list'

任意の助けを言うよSELECT . . . . idh.PayPalFee, sd.UnitCost, sd.PurchaseQuantity

に変更した場合は、ヒントの誰かが適切な応答を取得するために提供することができますか?

答えて

0

2番目の結合の後ではなく、クエリの最後にwhere句を適用すると、エラーが解決されます。

+0

あなたは正しいです、笑。私は近くにいたので、それは良いことです。ありがとうございます:) – bbruman

+0

うれしい私は助けることができます。答えを正しいとマークしてください:) – gaganshera