A occhio e croce, in SQL direi che non ce la fai.
Ti conviene fare una funzione PHP da chiamare in modo ricorsivo.
Una cosa del genere:
	Codice PHP:
	
function leggi($conn,$id) {
    $query = "SELECT COUNT(*) FROM sites WHERE ID_Cat = '$id'";
    $res = mysql_query($query,$conn);
    $r = mysql_fetch_row($res);
    $num = $r[0];
    $query = "SELECT ID_Cat FROM categories WHERE ID_UndCat = '$id'";
    $res = mysql_query($query,$conn);
    while ($row = mysql_fetch_row($res)) {
        $num += leggi($conn,$row[0]);    
    }
}
$id = //id di partenza per la ricerca
$totale = leggi ($conn,$id); 
 
prova...
(ovviamente $conn contiene la connessione al db, potresti anche non metterlo ma a me piace essere esplicito  
 )