2014-02-13 41 views
0

想知道如果有人可以帮助新手出来一些SQL?SQL计数与两个表

enter image description here

右键所以基本上我想所有的客户ID的具有一定COUNTRYCODE相关的我可以通过对客户表做一个简单的查询,但我然后需要找出多少表格客户已经在订单表中提交。

因此,在总结,我需要得到的customerID的客户表列表,并计算他们在订单表多少时间显示出来。

最简单的方法是什么?

P.S.请忽略上面图片中的任何数据类型/关系问题,这仅仅是一个例子。

谢谢。

回答

1

加入的表,在国家代码和组筛选结果:

SELECT CustomerID, COUNT(*) 
FROM  query_test.customer JOIN query_test.Order USING (CustomerID) 
WHERE query_test.customer.countrycode = ? 
GROUP BY CustomerID 
0

你可以使用

SELECT 
    c.customerID, 
    count(o.form_id) AS form_count 
FROM 
    customer c INNER JOIN order o 
    ON c.customerID = o.customerID 
WHERE 
    c.countrycode = ?? 
GROUP BY 
    c.customerID 
0

如果您有没有任何订单的客户,那么你将要a left outer join

SELECT c.CustomerID, COUNT(o.CustomerID) as NumOrders, COUNT(distinct FormID) as NumForms 
FROM query_test.customer c LEFT JOIN 
    query_test.Order o 
    on c.CustomerID = o.CustomerId 
WHERE c.countrycode = ? 
GROUP BY c.CustomerID; 

注意这个数字既包括订单数量又包括表单数量秒。