2012-04-24 49 views
0

這是數據庫的SQL編碼項目的一部分。SQL查詢無法獲取表中的訂單數

我需要設計一個表來保存客戶的訂單。
假設客戶的詳細信息(例如姓名)存儲在另一個表中。

使用我爲訂單設計的表格,以及此假定的其他表格,編寫了 單個SQL查詢,可以爲每個客戶提供一個訂單數量,每個客戶一行。

The 「Orders」 table 
Order_ID Order_NO Customer_ID 
1   8088   3 
2   9632   1 
3   1272   4 
4   6037   1 

假設客戶名稱和其他詳細信息(地址,電話號碼,電子郵件)存儲在「客戶」表中。

我的SQL:

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

是否有擰的東西呢?

+0

變化FULL JOIN於INNER JOIN也許 – 2012-04-24 06:36:12

回答

3

查詢更改爲內連接

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

查詢的定單計數爲客戶

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

+0

好的mysql不支持全加入,所以有 – 2012-04-24 06:40:48

+0

@rdkleine,COUNT(Orders.Order_Id)應該是COUNT(Orders.Customer_Id),對吧?我們需要統計每個客戶的訂單數量。 – user1002288 2012-04-24 16:13:09

+0

只要它來自tabel Orders,哪個列無關緊要。計數次數是與客戶相關的列的找到次數 – 2012-04-25 07:06:00

1

別忘了COUNTGROUP BY

+0

會你請解釋如何在我的代碼中使用它們?我是一個新的SQL學習者。謝謝 !!! – user1002288 2012-04-24 06:47:01

2

如果你只是想COUNT訂單,你可以這樣做:

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

參考文獻: