2016-03-30 6 views
0

Ich habe eine Datenbank tbl_productsElterndatenanzeige mit Kind zählen

id parent_id product_name 
1  0   abc 
2  1   xyz 
3  1   fgh 
4  1   pqr 
5  2   lmn 
6  2   uvw 

I-Daten angezeigt werden sollen wie

id child_count product_name 
1  3   abc 
2  2   xyz 
3  0   fgh 
4  0   pqr 
5  0   lmn 
6  0   uvw 

Antwort

2

Sie können die folgende Abfrage verwenden:

SELECT id, 
     (SELECT COUNT(*) 
     FROM tbl_products 
     WHERE parent_id = t.id) AS child_count, 
     product_name 
FROM tbl_products AS t 

Die Abfrage verwendet eine korrelierte Unterabfrage, um die Anzahl der untergeordneten Elemente des aktuellen Datensatzes abzurufen.

Demo here

Alternativ können Sie ein JOIN verwenden:

SELECT t1.id, 
     COALESCE(t2.cnt,0) AS child_count, 
     t1.product_name 
FROM tbl_products AS t1   
LEFT JOIN (SELECT parent_id, COUNT(*) AS cnt 
     FROM tbl_products 
     GROUP BY parent_id 
) AS t2 ON t1.id = t2.parent_id 

Demo here

+0

Dank Sir schön – abhayendra

+0

@abhayendra Froh, dass ich helfen konnte. Bitte markieren Sie diese oder eine andere Antwort als akzeptiert, wenn sie Ihnen bei der Lösung Ihres Problems geholfen hat. –