Wouldn't something like this do?
Untested.
SELECT P.NAME , COUNT(*) , S.name FROM tblproducts P
INNER JOIN tblhosting H ON H.packageid = P.id
INNER JOIN tblserver S ON H.server = S.id
GROUP BY S.id , P.id
Didn't bother throwing in all the checks/etc though - you'll need to re-add those if this...