IDが紐づいている別テーブルのレーコード件数を取得したい


以下のように、tableAのIDに紐づくtableBがあります。  
これらのテーブルに対してtableAの結果全てと、tableAのIDに紐づいているtableBの件数を、下記希望取得結果のような形で取得できるSQLはあるでしょうか？  
現在の想定では、tableAの結果をループで回してtableBの件数を取得するしかないかなと考えています。

[code]

    tableA
    id | name
    ーーーーーーー
    1  | 山田太郎
    2  | 鈴木次郎
    3  | 田中三郎
    
    
    tableB
    id | tableA_id
    ーーーーーーー
    1  | 1
    2  | 1
    3  | 1
    4  | 3
    
    
    希望取得結果
    1  | 山田太郎 | 3
    2  | 鈴木次郎 | 0
    3  | 田中三郎 | 1
    
[/code]




考え方ですがまず`tableB`をグループ化してカウントします。

[code]

    SELECT tableA_id, COUNT(*) FROM tableB GROUP BY tableA_id
    
[/code]

件数が得られます。

[code]

    1 | 3
    3 | 1
    
[/code]

`tableA`にこの結果を左結合します。

[code]

    SELECT id, name, cnt
    FROM tableA
    LEFT OUTER JOIN (SELECT tableA_id, COUNT(*) AS cnt FROM tableB GROUP BY tableA_id)
    ON id = tableA_id
    
[/code]

これで希望にかなり近い結果が得られます。

[code]

    1 | 山田太郎 | 3
    2 | 鈴木次郎 | NULL
    3 | 田中三郎 | 1
    
[/code]

左結合で結合されなかった行には`NULL`となるため、これを`0`にすれば希望する結果が得られます。

[code]

    SELECT id, name, COALESCE(cnt, 0)
    FROM tableA
    LEFT OUTER JOIN (SELECT tableA_id, COUNT(*) AS cnt FROM tableB GROUP BY tableA_id)
    ON id = tableA_id
    
[/code]




考え方ですがまず`tableB`をグループ化してカウントします。

[code]

    SELECT tableA_id, COUNT(*) FROM tableB GROUP BY tableA_id
    
[/code]

件数が得られます。

[code]

    1 | 3
    3 | 1
    
[/code]

`tableA`にこの結果を左結合します。

[code]

    SELECT id, name, cnt
    FROM tableA
    LEFT OUTER JOIN (SELECT tableA_id, COUNT(*) AS cnt FROM tableB GROUP BY tableA_id)
    ON id = tableA_id
    
[/code]

これで希望にかなり近い結果が得られます。

[code]

    1 | 山田太郎 | 3
    2 | 鈴木次郎 | NULL
    3 | 田中三郎 | 1
    
[/code]

左結合で結合されなかった行には`NULL`となるため、これを`0`にすれば希望する結果が得られます。

[code]

    SELECT id, name, COALESCE(cnt, 0)
    FROM tableA
    LEFT OUTER JOIN (SELECT tableA_id, COUNT(*) AS cnt FROM tableB GROUP BY tableA_id)
    ON id = tableA_id
    
[/code]

