0

ここに私のテーブルがあります:

お客様

Cust_ID (PK)
Name

注文

Order_ID (PK)
Cust_ID (FK)

ORDER_LINE

Order_ID (pk)
Part_ID (FK)

Part_ID (PK)
Part_Description

ここで、顧客の詳細、部品番号、および各顧客が注文した部品の説明をリストしたいと思います。

どうすればいいですか?

ありがとう。

4

4 に答える 4

2

FKを使用して「JOIN」を使用する必要がありますが、「ORDERS」と「ORDER_LINE」の間に外部キーがないことがわかります。テーブル定義から何かが欠落していないことを確認します。つまり、ORDER_LINEはFKとしてORDER_IDを持っている必要がありますか?お役に立てれば

于 2012-11-01T08:17:07.680 に答える
1

あなたは次のようなことを試すことができます

SELECT  c.*,
        p.*
FROM    CUSTOMER c INNER JOIN
        ORDERS o    ON  c.Cust_ID = o.Cust_ID INNER JOIN
        ORDER_LINE ol   ON  o.Order_ID = ol.Order_Number INNER JOIN
        PART p ON   ol.Part_Number = p.Part_Number

見て

結合(SQL)

SQL結合句は、データベース内の2つ以上のテーブルのレコードを結合します。

SQL結合

JOINキーワードは、SQLステートメントで使用され、これらのテーブルの特定の列間の関係に基づいて、2つ以上のテーブルからデータをクエリします。

そして、いくつかのグラフィックの例については

参加の基本

于 2012-11-01T08:16:29.593 に答える
1

必要なのは、次のような単純な単純なものですJOIN

SELECT 
  c.Cust_ID, 
  c.Name, 
  l.Part_Number, 
  l.Part_Description
FROM CUSTOMER c  
INNER JOIN ORDERS     o  ON c.Cust_ID      = o.Cust_ID
INNER JOIN ORDER_LINE ol ON o.OrdeR_ID     = ol.Order_Number
INNER JOIN PART       l  ON ol.Part_Number = l.Part_Number
于 2012-11-01T08:16:34.000 に答える
1

次のようなSQL「結合」が必要です。

SELECT c.Name, ol.Part_Number, p.Part_Description
FROM Customer AS c
JOIN Orders AS o ON c.Cust_ID = o.Cust_ID
JOIN Order_Line AS ol ON o.Order_ID = ol.Order_Number
JOIN Part AS p ON ol.Part_Number = p.Part_Number

WHERE句がないと、このクエリはすべての顧客のすべての注文のすべてのパーツを返すことに注意してください。これにより、ネットワークが実際に破壊され、小さなデータベース以外ではパフォーマンスが低下します。

WHERE(c.Cust_ID = MyCustomerID)

MySQL結合構文
SQLServer結合構文

于 2012-11-01T08:17:01.720 に答える