2014-10-04 17 views
0

我有一個MySQL問題。計數連接到其他表的行數

我有2個表:公司&產品

現在我需要在公司表中選擇行和統計產品數量每個公司。

下面是一個例子:

Company: 
--------------- 
| id | Name | 
--------------- 
| 1 | c1 | 
| 2 | c2 | 
| 3 | c3 | 
| 4 | c4 | 
--------------- 

Products: 
-------------------- 
| id | companyid | 
-------------------- 
| 1 | 3   | 
| 2 | 1   | 
| 3 | 4   | 
| 4 | 3   | 
| 5 | 2   | 
-------------------- 

而結果我需要得到的是:如果

---------------------------- 
| id | Name | numproducts| 
---------------------------- 
| 1 | c1 | 1   | 
| 2 | c2 | 1   | 
| 3 | c3 | 2   | 
| 4 | c4 | 1   | 
---------------------------- 

對不起,問題是基本的。 在此先感謝。

回答

1

加入2個表,然後按你所需的字段(一個或多個)公司表:

SELECT 
     c.name 
    , COUNT(p.id) AS no_of_products 
FROM company c 
     INNER JOIN products p 
        ON c.id = p.companyid 
GROUP BY 
     c.name 
+0

ooops,別名不正確,只是糾正 – 2014-10-04 13:15:08

0

您可以使用此查詢

SELECT * , 
    (SELECT COUNT(1) 
      FROM products p2 WHERE p2.companyid = p1.id) AS no_of_records 
FROM `company` p1 
1

您可以通過使用組數到得到你的答案

select 
    c.id, c.name, count(*) as numproducts 
from 
    company c join products p on c.id = p.companyid 
group by 
    c.id, c.name 
相關問題