Небольшой вопрос по SQL
Так будет работать:
select c.name, count( p.id ) as cnt
from company c
left join products p on c.id = p.id_company and  to_days(now()) - to_days(p.data) <= 10 
group by c.id

Неплохо было бы СУБД указать, в принципе относительно универсальным должно быть нечто такое:

select r.name,SUM(r.cnt) from
(
	select c.name, count( p.id ) as cnt
	from company c left join products p on c.id = p.id_company 
	where to_days(now()) - to_days(p.data) <= 10
	group by c.name

	union

	select c.name, 0 as cnt
	from company c left join products p on c.id = p.id_company 
	where to_days(now()) - to_days(p.data) > 10
	group by c.name
) as r

group by r.name


Т.е. фактически тут выполняется два запроса с противоположными условиями. Если MSSQL — можно было бы сделать CROSS APPLY