У меня 4 таблицы.
+----------------------+--------------+--------------+-----------+
| School | Event | SchoolStore | Order |
+----------------------+--------------+--------------+-----------+
| Id | Id | SchoolId | Id |
| OrdersAverageNumber | SchoolId | | EventId |
| | IsDeleted | | Status |
| | Status | | Date |
| | Date | | |
+----------------------+--------------+--------------+-----------+
отношение изображения
https://ibb.co/gwJ8QkM
Моя цель - вставить ordersAverageNumber в каждую школу
значение должно быть
(Общая сумма всех заказов со статусом = 1 и за период startDate - endDate)
делится на
(Общая сумма всех событий со статусом = 1 и IsDeleted = 0 для периода startDate - endDate)
Я пытался выбрать данные в соответствии с указанными критериями, но мне очень сложно все объединить.
Здесь я попытался разделить два выбора
select ((select count(*)
from [Order]
where(OrderStatus = 1 AND CreatedDate >= @startDate AND CreatedDate <= @endDate))
/
(SELECT Count(*)
FROM [Event]
WHERE ("IsDeleted" = 0 AND "Status" = 1 AND "Date" >= @startDate AND "Date" <= @endDate)))
Здесь я попытался запросить связанные данные таблицы
select distinct s.OrdersAverageNumber, evn.Id, evn.Status, evn.Date, evn.IsDeleted, ord.Id, ord.CreatedDate, ord.OrderStatus
from [School] s
join [SchoolStore] ss on s.Id = ss.SchoolId
join [Event] evn on evn.SchoolId = ss.SchoolId
join [Order] ord on ord.EventId = evn.Id
where(evn.IsDeleted = 0
AND evn.Status = 1
AND evn.Date >= @startDate
AND evn.Date <= @endDate
AND ord.OrderStatus = 1
AND ord.CreatedDate >= @startDate
AND ord.CreatedDate <= @endDate)
order by ord.CreatedDate desc
Основная проблема для меня - представить, как выполнить этот запрос для всех школ, разделить эти два выбора из связанных таблиц.