-1

这是数据库 SQL 编码项目的一部分。

我需要设计一个表来保存客户的订单。
假设客户的详细信息(例如姓名)存储在另一个表中。

使用我为订单设计的表和假设的其他表,编写一个 SQL 查询,该查询可以给出每个客户的订单数量,每个客户一行。

“订单”表

 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

有什么问题吗?

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

不要忘记COUNTGROUP BY

于 2012-04-24T06:36:39.007 回答