2013-05-17 37 views
1

說我有一個[產品]表和[Products.record]可以有許多與其相關的[Sales.records]在SQL查詢中包含關聯COUNT的最簡單方法是什麼?

我想要一個數據集,它可以給我一個產品的銷售數量。當然,一個產品可以有零銷售。

我查詢的第一個版本是這樣的:

SELECT products.*,COUNT(*) as num_of_sales 
LEFT OUTER JOIN sales ON sales.product_id = products.id 
GROUP BY products.id 

當然,問題是,這種查詢可以不說有1個銷售和0銷售的產品進行區分。

那麼,我怎樣才能得到這個非常簡單的數據集呢?

回答

3

不使用COUNT(*)而是使用COUNT(sales.product_id)

SELECT products.*, 
     COUNT(sales.product_id) as num_of_sales 
     LEFT OUTER JOIN sales 
      ON sales.product_id = products.id 
GROUP BY products.id 

一點題外話,您應該指定GROUP BY子句中的所有非聚集列。

+0

+1謝謝JW。在你的旁註中,爲什麼是這樣?而且,說明GROUP BY產品就足夠了。*? – andy

相關問題