-1

これは、データベースの SQL コーディング プロジェクトの一部です。

顧客からの注文を保持する単一のテーブルを設計する必要があります。
顧客の詳細 (名前など) が別のテーブルに格納されているとします。

注文用に設計したテーブルと、これが想定する別のテーブルを使用して、すべての顧客の注文数 (顧客ごとに 1 行) を提供できる単一の SQL クエリを作成します。

「注文」テーブル

 Order_ID   Order_NO    Customer_ID
 1            8088            3
 2            9632            1
 3            1272            4
 4            6037            1

顧客名とその他の詳細 (住所、電話番号、電子メール) が「Customers」テーブルに格納されているとします。

私のSQL:

 SELECT Customers.FirstName, Customers.FirstName, Orders.OrderNo
 FROM Customers
 FULL JOIN Orders
 ON Customers.Customer_ID = Orders.Customer_ID
 ORDER BY Customers.LastName

何か問題がありますか?

4

3 に答える 3

3

クエリを内部結合に変更します

SELECT 
    Customers.FirstName
    , Customers.FirstName
    , Orders.OrderNo  
FROM
    Customers  
    INNER JOIN Orders  ON Customers.Customer_ID = Orders.Customer_ID  
ORDER BY 
    Customers.LastName

顧客の Ordercount のクエリ

SELECT 
    Customers.LastName
    ,   COUNT(Orders.Order_Id)
FROM
    Customers  
    INNER JOIN Orders  ON Customers.Customer_ID = Orders.Customer_ID  
GROUP BY
    Customers.LastName
ORDER BY 
    Customers.LastName

完全結合

http://www.w3schools.com/sql/sql_join_full.asp

内部結合

http://www.w3schools.com/sql/sql_join_inner.asp

于 2012-04-24T06:38:00.483 に答える
2

COUNT注文したいだけの場合は、これを行うことができます:

SELECT 
    Customers.FirstName, 
    (
        SELECT
            COUNT(*)
        FROM
            Orders
        WHERE
            Orders.Customer_ID=Customers.Customer_ID
    ) AS NbrOfOrders
FROM 
    Customers

参考文献:

于 2012-04-24T06:47:54.907 に答える
1

と を忘れないCOUNTでくださいGROUP BY

于 2012-04-24T06:36:39.007 に答える