Beste mensen,

Ik heb een tabel met kolommen id, naam en parent_id
De parent_id is zoals het zelf wordt gezegd de id van de row die erboven zou zitten.
Voorbeeld:

id | naam | parent_id
=====================
1  | piet | 0
2  | jan  | 1
3  | han  | 1


Ik wil graag een resultaat hebben van id, naam, parent_id en een totaal.
Het totaal is in dat geval voor eerste select 2 (2x staat id 1 in parent_id) en de overige 2 hebben 0
Is dit mogelijk in 1 query?
Ik had eerste opzet:


SELECT id, naam, parent_id, COUNT(SELECT id FROM personen WHERE parent_id = id) AS totaal FROM personen
Ik zou het op deze manier doen:

SELECT a.id, a.naam, a.parent_id, COALESCE(b.num, 0) AS totaal
FROM personen a
LEFT JOIN (
  SELECT parent_id, count(parent_id) AS num
  FROM personen
  GROUP BY parent_id
) b ON a.id = b.parent_id
Nice Erwin, hier was ik inderdaad niet opgekomen op deze manier.

Reageren