Ваш запрос будет действительно работать, если вы удалите объединение - оно на самом деле не используется, и это приведет к конфликту таблицы ord в внутреннем подзапросе select с таблицей ord, к которой вы присоединились:
SELECT
ProductID,
Name,
Description,
Price,
(SELECT COUNT(*) FROM ord WHERE ord.ProductID = prod.ProductID) AS TotalNumberOfOrders
FROM tblProducts prod
В качестве альтернативы, вы можете использовать объединенную таблицу вместе с Group By
:
SELECT
ProductID,
Name,
Description,
Price,
COUNT(ord.ProductID) AS TotalNumberOfOrders
FROM tblProducts prod
LEFT JOIN tblOrders ord ON prod.ProductID = ord.ProductID
GROUP BY
ProductID,
Name,
Description,
Price