Мне нужно создать вид, подобный этому:
STUDENT JANUARY FEBRUARY MARCH ........ DECEMBER
miki 10.23 23.23 0 0
Goku 10 0 0 0
У меня есть таблица studentMovement(id_studentmovement,id_student,month,year,cost,date)
, которая представляет стоимость каждого сигла для студента в этом месяце и году.он содержит реальную стоимость, которую понесли некоторые студенты.
Другая таблица - Month(id_month)
, в которой указан весь месяц (January==1 February==2 etc)
.
Таблица Students(id_student,name)
Другаяпредставление Years(id_year)
, содержит год.
Я хочу получить год, для всех учащихся в таблице ученика (также для учащихся, у которых нет результатов) и для всего месяца (если в этом месяце есть выходные данные, значение равно 0)Хочу получить сумму всех расходов.Так что, на мой взгляд, это
CREATE
ALGORITHM = UNDEFINED DEFINER = "***" @"%" SQL SECURITY DEFINER VIEW "schema"."v_student_table" AS select
"s"."id_student" AS "id_student",
"s"."name" AS "name",
"m"."id_month" AS "id_month",
coalesce(sum("sm"."amount"),0) AS "amount",
coalesce(month("sm"."date"),"month"."id_month") AS "month",
coalesce(year("sm"."date"),"year"."id_year") AS "anno"
from
((("schema"."studentMovement" "sm"
left join "schema"."students" "s" on "s"."id_student"="sm"."id_student")
left join "schema"."month" "m" on "m"."id_month"="sm".id_month")
inner join "schema"."years" "y" on "y"."id_year"="sm".id_year")
group by
coalesce(year("sm"."date"),"year"."id_year"),
coalesce(month("sm"."date"),"month"."id_month"),
"s"."id_student",
"s"."name",
"m"."id_month"
Проблема в том, что если в месяце нет стоимости за месяц, мне нужно указать значение, равное 0, но с помощью этого запроса он этого не делает.проблема заключается в том, что студенческое движение имеет реальные результаты.в приведенном выше примере у Гоку только одна стоимость в январе, но студенческого гоку нет в ФЕВРАЛЕ и т. д. Кто-нибудь может мне помочь?