0

我的 SQL 技能几乎没有。在环顾过去 2 小时试图弄清楚这一点后,我需要一些帮助。

我有 2 个表如下

Table1                    Table2 

ID  | Name                Status_id
-----------               ----------
1   |   Open                  1
2   |   Closed                2
3   |   On-Hold               1

我想做的是计算表2中的status_id并按status_id分组。然后在第一列中添加 ID 匹配的名称。

我现在拥有的是

SELECT status_id, COUNT(*) AS 'num' FROM table2 GROUP BY status_id

到目前为止,这很棒并且返回

1   |   2
2   |   1

我需要返回的是

Open   |   2
Closed |   1

我希望这很清楚。任何人都可以帮忙吗?

非常感谢!

4

2 回答 2

2
SELECT a.name, COUNT(*) AS num FROM table2 b 
INNER JOIN table1 a 
ON b.status_id=a.id 
GROUP BY status_id
于 2012-07-13T03:17:10.267 回答
1

如果您还想为 On-Hold 设置零,则需要进行 LEFT 联接并计算 table2 中的 a 列而不是*

SELECT t1.name,
       Count(t2.Status_id) AS num 
FROM   table1 t1 
       LEFT JOIN table2 t2 
               ON t1.id = t2.Status_id
GROUP  BY t1.name;

演示

于 2012-07-13T04:05:57.787 回答