У меня есть три таблицы, products
, stock or inwards
, loading or outwards
, поэтому я хочу получить запрос sql, который будет вычислять закрытое сальдо по этой формуле в диапазоне дат
Закрытый баланс = Открытый баланс + внутрь-наружу
Например
таблица продуктов
Id ProductName OpenStock
1 Item 1 500
2 Item 1 40
3 Item 1 700
4 Item 1 80
Склад таблица (предположим, нет в наличии)
id pid qty Indate
1 1 0 2020-04-28
2 2 0 2020-04-28
3 3 0 2020-04-28
Таблица загрузки
id pid qty Outdate
1 1 30 2020-04-28
2 2 50 2020-04-28
3 3 30 2020-04-28
Ожидаю, что сегодня сводка акций будет такой
Pid OB inward outward CB
1 500 0 30 470
2 400 0 50 350
3 700 0 30 670
....
Так что завтра (следующий date) Мы ожидаем, что при отсутствии сводного запаса количества Inward или Ourwards будет и так далее:
Pid OB inward outward CB
1 470 0 30 470
2 350 0 50 350
3 670 0 30 670
Что я могу заархивировать в этом stock summary
запросе sql и что если я захочу выберите от даты к дате
это мой sql запрос, который возвращает скриншот ниже, но не работает правильно
public function searchstockview(Request $request) {
request()->validate([
'startdate' =>'required',
'enddate' => 'required',
]);
$startdate=$request->startdate;
$enddate=$request->enddate;
$viewstockbydate= DB::select(DB::raw(" SELECT
products.id,
products.name,products.open_stock as open_balance,
(select ifnull(sum(loadings.qty),0) from loadings where loadings.pid=products.id and
DATE(loadings.created_at) BETWEEN STR_TO_DATE('$startdate','%m/%d/%Y') AND
STR_TO_DATE('$enddate','%m/%d/%Y') ) as total_loadings_specific_date,
(select categories.name from categories where categories.id=products.category_id) as
category_name,
(select ifnull(sum(stocks.qty),0) from stocks where stocks.pid=products.id and
DATE(stocks.created_at) BETWEEN STR_TO_DATE('$startdate','%m/%d/%Y') AND
STR_TO_DATE('$enddate','%m/%d/%Y') ) as total_stocks_specific_date
from products"));
}
имейте в виду, что этот запрос я беру open_balance
, total_loadings_specific_date
, total_stocks_specific_date
и вставьте формуляр выше, чтобы получить закрытый баланс, но этот лог c не верен, мне нужны новые идеи. как решить эту проблему