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 の列をカウントする必要があります。*

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 に答える