Вам нужно использовать LEFT JOIN
вместо INNER JOIN
:
SELECT business.name, AVG(rating.value) as total
FROM business
INNER JOIN directory
ON business.id = directory.item_id
LEFT JOIN rating
ON business.id = rating.business_id AND rating.rating_id = '1'
WHERE directory.directory_id = 13
AND directory.type = 'business'
GROUP BY business.id
ORDER BY total DESC
Если нет оценок, итоговое значение будет равно NULL.
Вы можете справиться с этим в MySQL (если хотите) следующим образом:
IFNULL(AVG(rating.value), 'No ratings') as total
Также обратите внимание, что вам необходимо перевести rating.rating_id = '1'
в условия JOIN.