2010-06-15 20 views
0

J'ai des données hiérarchiques que je représente en utilisant le modèle de liste d'adjacence. Je me demande, quel est le moyen le plus simple pour sélectionner le nombre d'enfants immédiats pour chaque nœud? Si possible, je voudrais le faire en une seule sélection, ce qui donne un jeu de résultats comme si ...Comment calculer le nombre d'enfants immédiats pour chaque noeud dans une liste d'adjacence

RESULTS... 
ID  title  childCount 
1  test1  10 
2  test2  2 
3  test3  0 
etc... 

Merci pour vos conseils!

Répondre

0

Sans titre,

SELECT parentID as ID, COUNT(ID) AS childCount 
    FROM Table 
    GROUP BY parentID 

Si vous voulez le titre que je pense que vous avez besoin d'un auto-jointure (probablement beaucoup plus lent):

SELECT t1.ID as ID, t1.Title as Title, COUNT(t2.ID) as childCount 
    FROM Table t1 
    LEFT OUTER JOIN Table t2 
    ON t1.ID = t2.parentID 
0

Je pense que Alex a oublié groupe » En t2 .parentID »

vous pouvez aussi essayer:

SELECT t1.ID as ID, t1.Title as Title, COUNT(t2.ID) as childCount 

FROM Table t1 INNER JOIN Tableau t2 ON t1.ID = t2.parenID GROUP BY t2.parentID