2017-10-22 12 views
0

Good Day。mySQLで3つのテーブルに参加する

私はこの質問が既に尋ねられていることを知っていますが、私は問題を実装するのに苦労しています。

私はしたい 3テーブル。

Order_Header(Order_Header_ID{PK}, Order_Date, Order_Time, Order_Complete) 
Order_Line(Order_Line_ID{PK}, Product_ID{FK}, Order_Header_ID{FK},Quantity) 
Products(Product_ID{PK}, Description, Cost) 

私は1つのテーブルに、それは=「YES」Order_Complete 3つのテーブルのうちのOrder_Header_ID、数量や説明が表示されるように3つのテーブルに参加したい:ここに私のテーブルがどのように見えるかです。 私はすべての情報を表示するが、それらに参加しない以下のSQLを持っている。

SELECT 
    Order_Header.Order_Header_ID, 
    Products.Description, 
    Order_Line.Quantity 
FROM Order_Header, Products, Order_Line 
WHERE Order_Complete = 'yes' 

アイデアは、Order_Header_IDを対応するDescriptionとQuantityで1回だけリストするという考えです。

は、あなたの現在のクエリは、結合条件を欠けている、事前に

+0

"すべての情報を表示しますが、参加しない次のSQLがあります。 'FROM Order_Header、Products、Order_Line WHERE Order_Complete = 'yes''実際には、暗黙的なCROSS JOIN構文を使用しています。 –

+0

*絶対に* FROM句にカンマを使用しないでください。 *常に*適切で明示的な 'JOIN'構文を使用します。 –

+0

@GordonLinoff "FROM'句でカンマを使用しないでください。 'FROM'節に入れて内部結合テーブルを作ることは意味があります。唯一の問題は 'WHERE'節が適切な結合条件を含んでいなければならないということです。 –

答えて

1

、ありがとうございました。また、明示的な結合構文を使用することが望ましいです。これらの両方を訂正すると、次のクエリを書くことができます。

SELECT 
    oh.Order_Header_ID, 
    p.Description, 
    ol.Quantity 
FROM Order_Header oh 
INNER JOIN Order_Line ol 
    ON oh.Order_Header_ID = ol.Order_Header_ID 
INNER JOIN Products p 
    ON ol.Product_ID = p.Product_ID 
WHERE 
    oh.Order_Complete = 'yes' 
+0

ありがとうございます!完璧です!感謝万円!! – FSmith94

関連する問題