Compter le nombre d'enregistrements avec des valeurs correspondantes dans les champs séparés

J'ai une table (matable) comme suit:

id  | name  | orig_id
----+-------+--------
01  | Bill  | -
02  | Tom   | 01
03  | Sam   | 01
04  | Alex  | 02
05  | Phil  | -
06  | Bob   | 01

J'aimerais une requête qui retourne chaque enregistrement, mais avec un ajout de la colonne contenant le nombre de lignes qui ont un orig_id égal à la ligne actuelle de l'id.

La table résultante devrait ressembler à ceci:

id  | name  | orig_id | mycount
----+-------+---------+--------
01  | Bill  | -       | 3
02  | Tom   | 01      | 1
03  | Sam   | 01      | 0
04  | Alex  | 02      | 0
05  | Phil  | -       | 0
06  | Bob   | 01      | 0

J'ai essayé la requête suivante, mais n'obtenez pas de résultats:

SELECT *, COUNT(t.name) AS mycount
FROM "myTable" AS t
WHERE t.id=t.orig_id
GROUP BY t.id;

Comment puis-je obtenir les résultats souhaités?

Pourquoi Sam n'ont count 0 quand Tom a 1, mais tous les deux ont origid 01? Ne devrait pas Sam ont également compter 1
Sam a un 0 comptent, car aucun autre enregistrement a une orig_id qui est égal à son id (03). Tom a un nombre de 1 à cause d'Alex orig_id est égale à celle de Tom id.

OriginalL'auteur Rob Shell | 2013-06-26