Есть 2 таблицы bills and payments
, и общий объем продаж вставляется в таблицу заказов, а выручка - в таблицу платежей.Я хотел показать общий объем продаж и общий сбор наличных за последние 7 дней, но мой запрос, дающий мне результат, умножается на количество раз, когда данные за одну и ту же дату в laravel.
таблица счета : ![enter image description here](https://i.stack.imgur.com/I2YCr.png)
таблица платежи : ![enter image description here](https://i.stack.imgur.com/2a5lB.png)
Я хочу получить общее количество каждого дня за последние семь дней, где bills.created_date=payments.created_date
.мой запрос работает хорошо, но он дает мне общую сумму, умноженную на записи за определенный день.
Мой запрос (Laravel):
public function salesAndRevenue(){
$date = new Carbon\Carbon;
$salesAndRevenue =
DB::table('bills')
->Join(
'payments',
DB::raw('DATE(payments.created_at)'),
'=',
DB::raw('DATE(bills.created_at)'))
->select(
DB::raw('DATE(payments.created_at) as date'),
DB::raw('sum(payments.amount) as total_revenue'),
DB::raw('sum(bills.total_amount) as total_sales'))
->groupBy(DB::raw('DATE(payments.created_at)'))
->where(
DB::raw('DATE(bills.created_at)'),
'>',
$date->subDays(7)->toDateTimeString())
->get()->toArray();
return $salesAndRevenue;
}
Мой ожидаемый результат:
array:2 [▼
0 => {#254 ▼
+"date": "2019-03-11"
+"total_revenue": 5.0
+"total_sales": 5.0
}
1 => {#255 ▼
+"date": "2019-03-12"
+"total_revenue": 1500.0
+"total_sales": 1500.0
}
]
мой вывод:
array:2 [▼
0 => {#254 ▼
+"date": "2019-03-11"
+"total_revenue": 5.0
+"total_sales": 5.0
}
1 => {#255 ▼
+"date": "2019-03-12"
+"total_revenue": 4500.0
+"total_sales": 4500.0
}
]
Но этот код прекрасно работает без использования объединения для извлечения данных из одной таблицы.как:
$sales =
DB::table('bills')
->select(
DB::raw('DATE(created_at) as date'),
DB::raw('sum(total_amount) as total_sales'))
->groupBy('date')
->where(
DB::raw('DATE(created_at)'),
'>',
$date->subDays(7)->toDateTimeString())
->get()->toArray();
вывод:
array:2 [▼
0 => {#259 ▼
+"date": "2019-03-11"
+"total_sales": 5.0
}
1 => {#260 ▼
+"date": "2019-03-12"
+"total_sales": 1500.0
}
]