Projet

Général

Profil

INTER_CALENDRIER_VUE_15_06_20201_new.sql

nouveau code SQL de la vue - Clément Leneveu, 15/06/2021 12:35

 
1
DROP MATERIALIZED VIEW public."INTER_CALENDRIER_VUE";
2

    
3
CREATE MATERIALIZED VIEW public."INTER_CALENDRIER_VUE"
4
 AS SELECT row_number() OVER () AS id,
5
    tab."idSeanceSonate",
6
    tab."idEvenementSonate",
7
    tab."idUtilisateurSonate",
8
    string_agg(DISTINCT tab."idSalle"::text, ', '::text) AS "idSalle",
9
    tab."idModule",
10
    tab."NomModule",
11
    tab."NomSeance",
12
    tab."DateDebut",
13
    tab."DateFin",
14
    string_agg(DISTINCT tab."NomProfesseur", ', '::text) AS "NomProfesseur",
15
    string_agg(DISTINCT tab."Salle"::text, ', '::text) AS "Salle",
16
    string_agg(DISTINCT tab."CodeSalle"::text, ', '::text) AS "CodeSalle",
17
    tab."Type",
18
    tab.nom,
19
    tab.prenom,
20
    tab.pseudocentrale,
21
    string_agg(DISTINCT tab."GroupeTD"::text, '|'::text) AS "GroupeTD",
22
    tab.mailcentrale
23
   FROM ( SELECT DISTINCT seance.id_seance AS "idSeanceSonate",
24
            0 AS "idEvenementSonate",
25
                CASE
26
                    WHEN usrprof.id_user IS NULL THEN 0::bigint
27
                    ELSE usrprof.id_user
28
                END AS "idUtilisateurSonate",
29
            salle.id_salle AS "idSalle",
30
            mo.id_module AS "idModule",
31
            mo.nom AS "NomModule",
32
            seance.nom AS "NomSeance",
33
            ((seance.dateseance || ' '::text) || seance.heuredeb::text) || ':00'::text AS "DateDebut",
34
            ((seance.dateseance || ' '::text) || seance.heurefin::text) || ':00'::text AS "DateFin",
35
            (usrprof.nom::text || ' '::text) || initcap(usrprof.prenom::text) AS "NomProfesseur",
36
            salle.nom AS "Salle",
37
            salle.code AS "CodeSalle",
38
            typseance.nom AS "Type",
39
            usrprof.nom,
40
            initcap(usrprof.prenom::text) AS prenom,
41
            usrprof.logindomaine AS pseudocentrale,
42
            usrprof.mailgemgrh AS mailcentrale,
43
            gpe_td.nom AS "GroupeTD"
44
           FROM "ERP_Seance" seance
45
             LEFT JOIN "ERP_GroupeSeanceReelle" seance_relle ON seance.id_seance = seance_relle.id_seance
46
             LEFT JOIN "ERP_InscriptionInstanceModule" iim ON seance_relle.id_instancemodule = iim.id_instancemodule
47
             LEFT JOIN "ERP_InstanceModule" imo ON seance_relle.id_instancemodule = imo.id_instancemodule
48
             LEFT JOIN "ERP_Module" mo ON imo.id_module = mo.id_module
49
             LEFT JOIN "ERP_Etudiant" etu ON iim.id_etudiant = etu.id_etudiant
50
             LEFT JOIN "ERP_User" usr ON usr.id_user = etu.id_user
51
             LEFT JOIN "ERP_ProfAnime" profanim ON profanim.id_seance = seance.id_seance
52
             LEFT JOIN "ERP_Professeur" prof ON prof.id_prof = profanim.id_prof
53
             LEFT JOIN "ERP_User" usrprof ON prof.id_user = usrprof.id_user
54
             LEFT JOIN "ERP_SalleSeance" salseance ON seance.id_seance = salseance.id_seance
55
             LEFT JOIN "ERP_Salle" salle ON salseance.id_salle = salle.id_salle
56
             LEFT JOIN "ERP_TypeSeance" typseance ON seance.id_typeseance = typseance.id_typeseance
57
             LEFT JOIN "ERP_InstanceGroupeTDModule" igpe_td_mo ON imo.id_instancemodule = igpe_td_mo.id_instancemodule AND iim.id_instancegroupetd = igpe_td_mo.id_instancegroupetd
58
             LEFT JOIN "ERP_InstanceGroupeTD" igpe_td ON igpe_td_mo.id_instancegroupetd = igpe_td.id_instancegroupetd
59
             LEFT JOIN "ERP_GroupeTd" gpe_td ON igpe_td.id_groupetd = gpe_td.id_groupetd
60
                  WHERE seance.dateseance <= (NOW() + interval '6 month') AND seance.dateseance >= (NOW() - interval '6 month') 
61
        UNION
62
         SELECT DISTINCT seance.id_seance AS "idSeanceSonate",
63
            0 AS "idEvenementSonate",
64
                CASE
65
                    WHEN usr.id_user IS NULL THEN 0::bigint
66
                    ELSE usr.id_user
67
                END AS "idUtilisateurSonate",
68
            salle.id_salle AS "idSalle",
69
            mo.id_module AS "idModule",
70
            mo.nom AS "NomModule",
71
            seance.nom AS "NomSeance",
72
            ((seance.dateseance || ' '::text) || seance.heuredeb::text) || ':00'::text AS "DateDebut",
73
            ((seance.dateseance || ' '::text) || seance.heurefin::text) || ':00'::text AS "DateFin",
74
            (usrprof.nom::text || ' '::text) || initcap(usrprof.prenom::text) AS "NomProfesseur",
75
            salle.nom AS "Salle",
76
            salle.code AS "CodeSalle",
77
            typseance.nom AS "Type",
78
            usr.nom,
79
            initcap(usr.prenom::text) AS prenom,
80
            usr.logindomaine AS pseudocentrale,
81
            usr.mailgemgrh AS mailcentrale,
82
            gpe_td.nom AS "GroupeTD"
83
           FROM "ERP_Seance" seance
84
             LEFT JOIN "ERP_GroupeSeanceReelle" seance_relle ON seance.id_seance = seance_relle.id_seance
85
             LEFT JOIN "ERP_InscriptionInstanceModule" iim ON seance_relle.id_instancemodule = iim.id_instancemodule
86
             LEFT JOIN "ERP_InstanceModule" imo ON iim.id_instancemodule = imo.id_instancemodule
87
             LEFT JOIN "ERP_Module" mo ON imo.id_module = mo.id_module
88
             LEFT JOIN "ERP_Etudiant" etu ON iim.id_etudiant = etu.id_etudiant
89
             LEFT JOIN "ERP_User" usr ON usr.id_user = etu.id_user
90
             LEFT JOIN "ERP_ProfAnime" profanim ON profanim.id_seance = seance.id_seance
91
             LEFT JOIN "ERP_Professeur" prof ON prof.id_prof = profanim.id_prof
92
             LEFT JOIN "ERP_User" usrprof ON prof.id_user = usrprof.id_user
93
             LEFT JOIN "ERP_SalleSeance" salseance ON seance.id_seance = salseance.id_seance
94
             LEFT JOIN "ERP_Salle" salle ON salseance.id_salle = salle.id_salle
95
             LEFT JOIN "ERP_TypeSeance" typseance ON seance.id_typeseance = typseance.id_typeseance
96
             LEFT JOIN "ERP_InstanceGroupeTDModule" igpe_td_mo ON imo.id_instancemodule = igpe_td_mo.id_instancemodule AND iim.id_instancegroupetd = igpe_td_mo.id_instancegroupetd
97
             LEFT JOIN "ERP_InstanceGroupeTD" igpe_td ON igpe_td_mo.id_instancegroupetd = igpe_td.id_instancegroupetd
98
             LEFT JOIN "ERP_GroupeTd" gpe_td ON igpe_td.id_groupetd = gpe_td.id_groupetd
99
          WHERE igpe_td.id_instancegroupetd = seance_relle.id_instancegroupetd
100
                  AND seance.dateseance <= (NOW() + interval '6 month') AND seance.dateseance >= (NOW() - interval '6 month') 
101
        UNION
102
         SELECT DISTINCT seance.id_seance AS "idSeanceSonate",
103
            0 AS "idEvenementSonate",
104
                CASE
105
                    WHEN usr.id_user IS NULL THEN 0::bigint
106
                    ELSE usr.id_user
107
                END AS "idUtilisateurSonate",
108
            salle.id_salle AS "idSalle",
109
            mo.id_module AS "idModule",
110
            mo.nom AS "NomModule",
111
            seance.nom AS "NomSeance",
112
            ((seance.dateseance || ' '::text) || seance.heuredeb::text) || ':00'::text AS "DateDebut",
113
            ((seance.dateseance || ' '::text) || seance.heurefin::text) || ':00'::text AS "DateFin",
114
            (usrprof.nom::text || ' '::text) || initcap(usrprof.prenom::text) AS "NomProfesseur",
115
            salle.nom AS "Salle",
116
            salle.code AS "CodeSalle",
117
            typseance.nom AS "Type",
118
            usr.nom,
119
            initcap(usr.prenom::text) AS prenom,
120
            usr.logindomaine AS pseudocentrale,
121
            usr.mailgemgrh AS mailcentrale,
122
            gpe_td.nom AS "GroupeTD"
123
           FROM "ERP_Seance" seance
124
             LEFT JOIN "ERP_GroupeSeanceReelle" seance_relle ON seance.id_seance = seance_relle.id_seance
125
             LEFT JOIN "ERP_InscriptionInstanceModule" iim ON seance_relle.id_instancemodule = iim.id_instancemodule
126
             JOIN "ERP_GPCOM_IIM" gp_comp ON iim.id_inscriptioninstancemodule = gp_comp.id_inscriptioninstancemodule
127
             LEFT JOIN "ERP_InstanceModule" imo ON iim.id_instancemodule = imo.id_instancemodule
128
             LEFT JOIN "ERP_Module" mo ON imo.id_module = mo.id_module
129
             LEFT JOIN "ERP_Etudiant" etu ON iim.id_etudiant = etu.id_etudiant
130
             LEFT JOIN "ERP_User" usr ON usr.id_user = etu.id_user
131
             LEFT JOIN "ERP_ProfAnime" profanim ON profanim.id_seance = seance.id_seance
132
             LEFT JOIN "ERP_Professeur" prof ON prof.id_prof = profanim.id_prof
133
             LEFT JOIN "ERP_User" usrprof ON prof.id_user = usrprof.id_user
134
             LEFT JOIN "ERP_SalleSeance" salseance ON seance.id_seance = salseance.id_seance
135
             LEFT JOIN "ERP_Salle" salle ON salseance.id_salle = salle.id_salle
136
             LEFT JOIN "ERP_TypeSeance" typseance ON seance.id_typeseance = typseance.id_typeseance
137
             LEFT JOIN "ERP_InstanceGroupeTDModule" igpe_td_mo ON imo.id_instancemodule = igpe_td_mo.id_instancemodule AND gp_comp.id_instancegroupetd = igpe_td_mo.id_instancegroupetd
138
             LEFT JOIN "ERP_InstanceGroupeTD" igpe_td ON igpe_td_mo.id_instancegroupetd = igpe_td.id_instancegroupetd
139
             LEFT JOIN "ERP_GroupeTd" gpe_td ON igpe_td.id_groupetd = gpe_td.id_groupetd
140
          WHERE igpe_td.id_instancegroupetd = seance_relle.id_instancegroupetd
141
                  AND seance.dateseance <= (NOW() + interval '6 month') AND seance.dateseance >= (NOW() - interval '6 month') 
142
        UNION
143
         SELECT DISTINCT seance.id_seanceevaluation AS "idSeanceSonate",
144
            0 AS "idEvenementSonate",
145
                CASE
146
                    WHEN usr.id_user IS NULL THEN 0::bigint
147
                    ELSE usr.id_user
148
                END AS "idUtilisateurSonate",
149
            0 AS "idSalle",
150
            mo.id_module AS "idModule",
151
            mo.nom AS "NomModule",
152
            seance.nom AS "NomSeance",
153
            ((seance.dateseance || ' '::text) || seance.heuredeb::text) || ':00'::text AS "DateDebut",
154
            ((seance.dateseance || ' '::text) || seance.heurefin::text) || ':00'::text AS "DateFin",
155
            ''::text AS "NomProfesseur",
156
            salle.salles AS "Salle",
157
            ''::text AS "CodeSalle",
158
            typseance.nom AS "Type",
159
            usr.nom,
160
            initcap(usr.prenom::text) AS prenom,
161
            usr.logindomaine AS pseudocentrale,
162
            usr.mailgemgrh AS mailcentrale,
163
            gpe_td.nom AS "GroupeTD"
164
           FROM "ERP_SeanceEvaluation" seance
165
             LEFT JOIN "ERP_SeanceEvaluationConcat" salle ON salle.id_seanceevaluation = seance.id_seanceevaluation
166
             LEFT JOIN "ERP_GroupeSeanceEvaluationReelle" s_grpe_eval_re ON seance.id_seanceevaluation = s_grpe_eval_re.id_seanceevaluation
167
             LEFT JOIN "ERP_InstanceModule" imo ON imo.id_instancemodule = s_grpe_eval_re.id_instancemodule
168
             LEFT JOIN "ERP_Module" mo ON imo.id_module = mo.id_module
169
             LEFT JOIN "ERP_InscriptionInstanceModule" iim ON imo.id_instancemodule = iim.id_instancemodule
170
             LEFT JOIN "ERP_Etudiant" etu ON iim.id_etudiant = etu.id_etudiant
171
             LEFT JOIN "ERP_User" usr ON usr.id_user = etu.id_user
172
             LEFT JOIN "ERP_TypeSeance" typseance ON seance.id_typeseance = typseance.id_typeseance
173
             LEFT JOIN "ERP_InstanceGroupeTDModule" igpe_td_mo ON imo.id_instancemodule = igpe_td_mo.id_instancemodule AND iim.id_instancegroupetd = igpe_td_mo.id_instancegroupetd
174
             LEFT JOIN "ERP_InstanceGroupeTD" igpe_td ON igpe_td_mo.id_instancegroupetd = igpe_td.id_instancegroupetd
175
             LEFT JOIN "ERP_GroupeTd" gpe_td ON igpe_td.id_groupetd = gpe_td.id_groupetd
176
          WHERE s_grpe_eval_re.id_instancegroupetd = iim.id_instancegroupetd
177
          AND seance.dateseance <= (NOW() + interval '6 month') AND seance.dateseance >= (NOW() - interval '6 month') 
178
        UNION
179
         SELECT DISTINCT 0 AS "idSeanceSonate",
180
            evtsalle.id_evenement AS "idEvenementSonate",
181
                CASE
182
                    WHEN usr_inv.id_user IS NOT NULL THEN usr_inv.id_user
183
                    ELSE 0::bigint
184
                END AS "idUtilisateurSonate",
185
            salle.id_salle AS "idSalle",
186
            0 AS "idModule",
187
            evt.nom AS "NomModule",
188
            evt.nom AS "NomSeance",
189
            ((evt.datedebutevenement || ' '::text) || evt.heuredebut::text) || ':00'::text AS "DateDebut",
190
            ((evt.datefinevenement || ' '::text) || evt.heurefin::text) || ':00'::text AS "DateFin",
191
            ''::text AS "NomProfesseur",
192
            salle.nom AS "Salle",
193
            salle.code AS "CodeSalle",
194
            evttype.nom AS "Type",
195
                CASE
196
                    WHEN usr_inv.id_user IS NOT NULL THEN usr_inv.nom
197
                    ELSE ''::character varying
198
                END AS nom,
199
                CASE
200
                    WHEN usr_inv.id_user IS NOT NULL THEN initcap(usr_inv.prenom::text)::character varying
201
                    ELSE ''::character varying
202
                END AS prenom,
203
            usr_inv.logindomaine::text AS pseudocentrale,
204
            usr_inv.mailgemgrh AS mailcentrale,
205
            ''::text AS "GroupeTD"
206
           FROM "ERP_Evenement" evt
207
             LEFT JOIN "ERP_SalleEvenement" evtsalle ON evtsalle.id_evenement = evt.id_evenement
208
             LEFT JOIN "ERP_TypeEvenement" evttype ON evttype.id_typeevenement = evt.id_typeevenement
209
             LEFT JOIN "ERP_Salle" salle ON evtsalle.id_salle = salle.id_salle
210
             LEFT JOIN "ERP_InviteEvenement" inv ON inv.id_evenement = evt.id_evenement
211
             LEFT JOIN "ERP_User" usr_inv ON inv.id_user = usr_inv.id_user
212
          WHERE evt.datedebutevenement <= (NOW() + interval '6 month') AND evt.datedebutevenement >= (NOW() - interval '6 month')) tab
213
  GROUP BY tab."idSeanceSonate", tab."idEvenementSonate", tab."idUtilisateurSonate", tab."NomSeance", tab."idModule", tab."NomModule", tab.pseudocentrale, tab."DateDebut", tab."DateFin", tab."Type", tab.nom, tab.prenom, tab.mailcentrale
214
;
215

    
216
  ALTER TABLE "INTER_CALENDRIER_VUE"
217
    OWNER TO cri;
218

    
219
  GRANT SELECT ON "INTER_CALENDRIER_VUE" TO edt;
220

    
221
REFRESH MATERIALIZED VIEW "INTER_CALENDRIER_VUE";