У меня есть запрос, который добавляет суммы значений в столбцах из связанных таблиц, например:
Product::where('type', 'physical')
->leftJoin('offline_purchases', 'products.id', '=', 'offline_purchases.product_id')
->leftJoin('online_purchases', 'products.id', '=', 'offline_purchases.product_id')
->groupBy('products.id')
->selectRaw('products.id as id, products.name as name, sum(offline_purchases.quantity) as total_offline_purchases, sum(online_purchases.quantity) as total_online_purchases');
, но это не работает, потому что если есть 2 онлайн-покупки и 2 оффлайн-покупки, mysql сгенерирует 4 строки для данного продукта, и суммы будут в два раза больше, чем они должны быть.
Использование ключевого слова distinct
в суммах не будет работать, поскольку оно будет суммировать только отдельные количества, а не сумму количество покупок с разными идентификаторами.
Есть ли способ получить сумму количеств разных покупок обоих типов только с MySQL?