私が完全にこれを正しく行っているかどうかはわかりません。外部キーを使用した最初の回りです。MySQL外部キーを使用した4つのテーブルへの結合SELECTステートメントの拒否3番目
私はJOIN
を4つのテーブルで実行しようとしています。
- inventory_detail_history
- 出荷(ホールセール)
- shipment_ids外部キー
- shipment_detailsを保持するこれらの二つと共に
shipment_details
id
フィールドに外部キー制約を適用しました。 これはshipment_ids
テーブルのshipment_id
列を参照しています。 、id
QuantityPurchased
をUnitCost
、FreightTotal
、CustomDutiesTotal
shipment_ids
次の列があります:
shipment_details
は、次の列があり 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.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';
:
はしかし、私は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
に変更した場合は、ヒントの誰かが適切な応答を取得するために提供することができますか?
あなたは正しいです、笑。私は近くにいたので、それは良いことです。ありがとうございます:) – bbruman
うれしい私は助けることができます。答えを正しいとマークしてください:) – gaganshera