Вот необработанный запрос, который вы, вероятно, хотите использовать:
SELECT
p.product_name,
COUNT(t.product_id) AS total
FROM products p
LEFT JOIN transactions t
ON p.product_id = t.product_id
GROUP BY
p.product_name
ORDER BY
total DESC;
Вот код Laravel для вышеприведенного:
$saleTtransaction = DB::table("products p")
->select("p.product_name",
DB::raw('COUNT(t.product_id) AS total'))
->join("transactions t", "p.product_id", "=", "t.product_id")
->groupBy("p.product_name")
->orderBy('total', 'desc')
->get();
Это предполагает, что каждый продукт всегда имеет уникальныйназвание.Если нет, то технически мы должны агрегировать как по названию продукта, так и по идентификатору.