| 1 | -- активни возења
|
|---|
| 2 | CREATE VIEW VW_ACTIVE_TRIPS AS
|
|---|
| 3 | SELECT
|
|---|
| 4 | t.TRIP_ID,
|
|---|
| 5 | t.TRIP_DATE,
|
|---|
| 6 | t.START_TIME,
|
|---|
| 7 | t.END_TIME,
|
|---|
| 8 | t.STATUS,
|
|---|
| 9 | t.TRIP_HEADSIGN,
|
|---|
| 10 | r.ROUTE_ID,
|
|---|
| 11 | r.ROUTE_NAME,
|
|---|
| 12 | vi.VEHICLE_ID,
|
|---|
| 13 | vi.REGISTRATION_NUMBER,
|
|---|
| 14 | vi.MODEL AS VEHICLE_MODEL,
|
|---|
| 15 | vi.VEHICLE_TYPE,
|
|---|
| 16 | di.DRIVER_NAME,
|
|---|
| 17 | di.LICENSE_NUMBER
|
|---|
| 18 | FROM TRIP t
|
|---|
| 19 | JOIN ROUTE r ON t.ROUTE_ID = r.ROUTE_ID
|
|---|
| 20 | JOIN VW_VEHICLE_INFO vi ON t.VEHICLE_ID = vi.VEHICLE_ID
|
|---|
| 21 | JOIN VW_DRIVER_INFO di ON t.DRIVER_ID = di.DRIVER_ID
|
|---|
| 22 | WHERE t.STATUS IN ('SCHEDULED', 'IN_PROGRESS');
|
|---|
| 23 |
|
|---|
| 24 | -- распоред на постојќи по линија
|
|---|
| 25 | CREATE VIEW VW_ROUTE_TIMETABLE AS
|
|---|
| 26 | SELECT
|
|---|
| 27 | r.ROUTE_ID,
|
|---|
| 28 | r.ROUTE_NAME,
|
|---|
| 29 | t.TRIP_ID,
|
|---|
| 30 | t.TRIP_DATE,
|
|---|
| 31 | t.DIRECTION_ID,
|
|---|
| 32 | si.STOP_ID,
|
|---|
| 33 | si.STOP_NAME,
|
|---|
| 34 | si.LATITUDE,
|
|---|
| 35 | si.LONGITUDE,
|
|---|
| 36 | st.STOP_SEQUENCE,
|
|---|
| 37 | st.ARRIVAL_TIME,
|
|---|
| 38 | st.DEPARTURE_TIME,
|
|---|
| 39 | si.ZONE_NAME
|
|---|
| 40 | FROM STOP_TIME st
|
|---|
| 41 | JOIN TRIP t ON st.TRIP_ID = t.TRIP_ID
|
|---|
| 42 | JOIN ROUTE r ON t.ROUTE_ID = r.ROUTE_ID
|
|---|
| 43 | JOIN VW_STOP_INFO si ON st.STOP_ID = si.STOP_ID AND st.STOP_VT = si.VEHICLE_TYPE_ID
|
|---|
| 44 | ORDER BY r.ROUTE_ID, t.TRIP_ID, st.STOP_SEQUENCE;
|
|---|
| 45 |
|
|---|
| 46 | -- доцнења по trip
|
|---|
| 47 | CREATE VIEW VW_TRIP_DELAYS AS
|
|---|
| 48 | SELECT
|
|---|
| 49 | t.TRIP_ID,
|
|---|
| 50 | t.TRIP_DATE,
|
|---|
| 51 | r.ROUTE_NAME,
|
|---|
| 52 | vi.REGISTRATION_NUMBER,
|
|---|
| 53 | di.DRIVER_NAME,
|
|---|
| 54 | COUNT(dl.DELAY_ID) AS TOTAL_DELAY_RECORDS,
|
|---|
| 55 | SUM(dl.DELAY_MINUTES) AS TOTAL_DELAY_MINUTES,
|
|---|
| 56 | AVG(dl.DELAY_MINUTES) AS AVG_DELAY_MINUTES,
|
|---|
| 57 | MAX(dl.DELAY_MINUTES) AS MAX_DELAY_MINUTES,
|
|---|
| 58 | STRING_AGG(DISTINCT dl.DELAY_REASON, '; ') AS DELAY_REASONS
|
|---|
| 59 | FROM TRIP t
|
|---|
| 60 | JOIN ROUTE r ON t.ROUTE_ID = r.ROUTE_ID
|
|---|
| 61 | JOIN VW_VEHICLE_INFO vi ON t.VEHICLE_ID = vi.VEHICLE_ID
|
|---|
| 62 | JOIN VW_DRIVER_INFO di ON t.DRIVER_ID = di.DRIVER_ID
|
|---|
| 63 | JOIN DELAY_LOG dl ON t.TRIP_ID = dl.TRIP_ID
|
|---|
| 64 | GROUP BY t.TRIP_ID, t.TRIP_DATE, r.ROUTE_NAME,
|
|---|
| 65 | vi.REGISTRATION_NUMBER, di.DRIVER_NAME;
|
|---|
| 66 |
|
|---|
| 67 | -- моментална локација на возила
|
|---|
| 68 | CREATE VIEW VW_VEHICLE_CURRENT_LOCATION AS
|
|---|
| 69 | SELECT DISTINCT ON (vl.VEHICLE_ID)
|
|---|
| 70 | vl.VEHICLE_ID,
|
|---|
| 71 | vi.REGISTRATION_NUMBER,
|
|---|
| 72 | vi.VEHICLE_TYPE,
|
|---|
| 73 | vi.VEHICLE_STATUS,
|
|---|
| 74 | vl.TRIP_ID,
|
|---|
| 75 | r.ROUTE_NAME,
|
|---|
| 76 | vl.LATITUDE,
|
|---|
| 77 | vl.LONGITUDE,
|
|---|
| 78 | vl.SPEED_KMH,
|
|---|
| 79 | vl.OCCUPANCY_STATUS,
|
|---|
| 80 | vl.CONGESTION_LEVEL,
|
|---|
| 81 | cs.STOP_NAME AS CURRENT_STOP,
|
|---|
| 82 | ns.STOP_NAME AS NEXT_STOP,
|
|---|
| 83 | vl.DISTANCE_TO_NEXT_STOP_M,
|
|---|
| 84 | vl.RECORDED_AT
|
|---|
| 85 | FROM VEHICLE_LOG vl
|
|---|
| 86 | JOIN VW_VEHICLE_INFO vi ON vl.VEHICLE_ID = vi.VEHICLE_ID
|
|---|
| 87 | JOIN TRIP t ON vl.TRIP_ID = t.TRIP_ID
|
|---|
| 88 | JOIN ROUTE r ON t.ROUTE_ID = r.ROUTE_ID
|
|---|
| 89 | LEFT JOIN VW_STOP_INFO cs ON vl.CURRENT_STOP_ID = cs.STOP_ID AND vl.CURRENT_STOP_VT = cs.VEHICLE_TYPE_ID
|
|---|
| 90 | LEFT JOIN VW_STOP_INFO ns ON vl.NEXT_STOP_ID = ns.STOP_ID AND vl.NEXT_STOP_VT = ns.VEHICLE_TYPE_ID
|
|---|
| 91 | ORDER BY vl.VEHICLE_ID, vl.RECORDED_AT DESC;
|
|---|
| 92 |
|
|---|
| 93 | -- детален тикет
|
|---|
| 94 | CREATE VIEW VW_TICKET_DETAILS AS
|
|---|
| 95 | SELECT
|
|---|
| 96 | t.TICKET_ID,
|
|---|
| 97 | p.FIRST_NAME || ' ' || p.LAST_NAME AS PASSENGER_NAME,
|
|---|
| 98 | tt.NAME AS TICKET_TYPE,
|
|---|
| 99 | t.PRICE,
|
|---|
| 100 | d.DISCOUNT_NAME,
|
|---|
| 101 | d.DISCOUNT_PERCENTAGE,
|
|---|
| 102 | r.ROUTE_NAME,
|
|---|
| 103 | s1.STOP_NAME AS FROM_STOP,
|
|---|
| 104 | s2.STOP_NAME AS TO_STOP,
|
|---|
| 105 | t.PURCHASE_DATE,
|
|---|
| 106 | t.STATUS
|
|---|
| 107 | FROM TICKET t
|
|---|
| 108 | JOIN PASSENGER p ON t.PASSENGER_ID = p.PASSENGER_ID
|
|---|
| 109 | JOIN TICKET_TYPE tt ON t.TICKET_TYPE_ID = tt.TICKET_TYPE_ID
|
|---|
| 110 | LEFT JOIN DISCOUNT d ON t.DISCOUNT_ID = d.DISCOUNT_ID
|
|---|
| 111 | LEFT JOIN TRIP tr ON t.TRIP_ID = tr.TRIP_ID
|
|---|
| 112 | LEFT JOIN ROUTE r ON tr.ROUTE_ID = r.ROUTE_ID
|
|---|
| 113 | LEFT JOIN STOPS s1 ON t.START_STOP_ID = s1.STOP_ID AND t.START_STOP_VT = s1.VEHICLE_TYPE_ID
|
|---|
| 114 | LEFT JOIN STOPS s2 ON t.END_STOP_ID = s2.STOP_ID AND t.END_STOP_VT = s2.VEHICLE_TYPE_ID;
|
|---|
| 115 |
|
|---|
| 116 | -- распоред на возачи и кондуктори
|
|---|
| 117 | CREATE VIEW VW_STAFF_SCHEDULE AS
|
|---|
| 118 | SELECT
|
|---|
| 119 | 'DRIVER' AS ROLE,
|
|---|
| 120 | ds.SCHEDULE_DATE,
|
|---|
| 121 | e.FIRST_NAME || ' ' || e.LAST_NAME AS STAFF_NAME,
|
|---|
| 122 | e.PHONE,
|
|---|
| 123 | sh.SHIFT_NAME,
|
|---|
| 124 | sh.START_TIME AS SHIFT_FROM,
|
|---|
| 125 | sh.END_TIME AS SHIFT_TO,
|
|---|
| 126 | t.TRIP_ID,
|
|---|
| 127 | r.ROUTE_NAME,
|
|---|
| 128 | v.REGISTRATION_NUMBER
|
|---|
| 129 | FROM DRIVER_SCHEDULE ds
|
|---|
| 130 | JOIN DRIVER dr ON ds.DRIVER_ID = dr.DRIVER_ID
|
|---|
| 131 | JOIN EMPLOYEE e ON dr.EMPLOYEE_ID = e.EMPLOYEE_ID
|
|---|
| 132 | JOIN SHIFT sh ON ds.SHIFT_ID = sh.SHIFT_ID
|
|---|
| 133 | JOIN TRIP t ON ds.TRIP_ID = t.TRIP_ID
|
|---|
| 134 | JOIN ROUTE r ON t.ROUTE_ID = r.ROUTE_ID
|
|---|
| 135 | JOIN VEHICLE v ON t.VEHICLE_ID = v.VEHICLE_ID
|
|---|
| 136 |
|
|---|
| 137 | UNION ALL
|
|---|
| 138 |
|
|---|
| 139 | SELECT
|
|---|
| 140 | 'CONDUCTOR' AS ROLE,
|
|---|
| 141 | cs.SCHEDULE_DATE,
|
|---|
| 142 | e.FIRST_NAME || ' ' || e.LAST_NAME AS STAFF_NAME,
|
|---|
| 143 | e.PHONE,
|
|---|
| 144 | sh.SHIFT_NAME,
|
|---|
| 145 | sh.START_TIME AS SHIFT_FROM,
|
|---|
| 146 | sh.END_TIME AS SHIFT_TO,
|
|---|
| 147 | t.TRIP_ID,
|
|---|
| 148 | r.ROUTE_NAME,
|
|---|
| 149 | v.REGISTRATION_NUMBER
|
|---|
| 150 | FROM CONDUCTOR_SCHEDULE cs
|
|---|
| 151 | JOIN CONDUCTOR c ON cs.CONDUCTOR_ID = c.CONDUCTOR_ID
|
|---|
| 152 | JOIN EMPLOYEE e ON c.EMPLOYEE_ID = e.EMPLOYEE_ID
|
|---|
| 153 | JOIN SHIFT sh ON cs.SHIFT_ID = sh.SHIFT_ID
|
|---|
| 154 | JOIN TRIP t ON cs.TRIP_ID = t.TRIP_ID
|
|---|
| 155 | JOIN ROUTE r ON t.ROUTE_ID = r.ROUTE_ID
|
|---|
| 156 | JOIN VEHICLE v ON t.VEHICLE_ID = v.VEHICLE_ID;
|
|---|
| 157 |
|
|---|
| 158 | -- билети
|
|---|
| 159 | CREATE VIEW VW_TICKETS_BASIC AS
|
|---|
| 160 | SELECT
|
|---|
| 161 | t.TICKET_ID,
|
|---|
| 162 | t.PASSENGER_ID,
|
|---|
| 163 | t.TRIP_ID,
|
|---|
| 164 | tt.NAME AS TICKET_TYPE,
|
|---|
| 165 | t.PRICE,
|
|---|
| 166 | t.STATUS,
|
|---|
| 167 | t.PURCHASE_DATE
|
|---|
| 168 | FROM TICKET t
|
|---|
| 169 | JOIN TICKET_TYPE tt ON t.TICKET_TYPE_ID = tt.TICKET_TYPE_ID;
|
|---|
| 170 |
|
|---|
| 171 | -- финансиски извештај по линија
|
|---|
| 172 | CREATE VIEW VW_REVENUE_BY_ROUTE AS
|
|---|
| 173 | SELECT
|
|---|
| 174 | r.ROUTE_ID,
|
|---|
| 175 | r.ROUTE_NAME,
|
|---|
| 176 | a.AGENCY_NAME,
|
|---|
| 177 | COUNT(DISTINCT t.TRIP_ID) AS TOTAL_TRIPS,
|
|---|
| 178 | COUNT(tk.TICKET_ID) AS TICKETS_SOLD,
|
|---|
| 179 | SUM(tk.PRICE) AS GROSS_REVENUE,
|
|---|
| 180 | SUM(CASE WHEN pay.PAYMENT_STATUS = 'COMPLETED'
|
|---|
| 181 | THEN pay.AMOUNT ELSE 0 END) AS COLLECTED_REVENUE,
|
|---|
| 182 | AVG(tk.PRICE) AS AVG_TICKET_PRICE
|
|---|
| 183 | FROM ROUTE r
|
|---|
| 184 | JOIN AGENCY a ON r.AGENCY_ID = a.AGENCY_ID
|
|---|
| 185 | JOIN TRIP t ON r.ROUTE_ID = t.ROUTE_ID
|
|---|
| 186 | JOIN TICKET tk ON t.TRIP_ID = tk.TRIP_ID
|
|---|
| 187 | LEFT JOIN PAYMENT pay ON tk.TICKET_ID = pay.TICKET_ID
|
|---|
| 188 | WHERE tk.STATUS NOT IN ('CANCELLED', 'REFUNDED')
|
|---|
| 189 | GROUP BY r.ROUTE_ID, r.ROUTE_NAME, a.AGENCY_NAME;
|
|---|
| 190 |
|
|---|
| 191 | -- complaints по патник
|
|---|
| 192 | CREATE VIEW VW_PASSENGER_COMPLAINTS AS
|
|---|
| 193 | SELECT
|
|---|
| 194 | p.PASSENGER_ID,
|
|---|
| 195 | p.FIRST_NAME || ' ' || p.LAST_NAME AS PASSENGER_NAME,
|
|---|
| 196 | COUNT(c.COMPLAINT_ID) AS TOTAL_COMPLAINTS,
|
|---|
| 197 | MAX(c.COMPLAINT_DATE) AS LAST_COMPLAINT_DATE
|
|---|
| 198 | FROM PASSENGER p
|
|---|
| 199 | LEFT JOIN COMPLAINT c ON p.PASSENGER_ID = c.PASSENGER_ID
|
|---|
| 200 | GROUP BY p.PASSENGER_ID, p.FIRST_NAME, p.LAST_NAME;
|
|---|
| 201 |
|
|---|
| 202 | -- нотификации по патник
|
|---|
| 203 | CREATE VIEW VW_PASSENGER_NOTIFICATIONS AS
|
|---|
| 204 | SELECT
|
|---|
| 205 | p.PASSENGER_ID,
|
|---|
| 206 | p.FIRST_NAME || ' ' || p.LAST_NAME AS PASSENGER_NAME,
|
|---|
| 207 | n.NOTIFICATION_TYPE,
|
|---|
| 208 | n.MESSAGE,
|
|---|
| 209 | n.STATUS,
|
|---|
| 210 | n.SENT_TIME
|
|---|
| 211 | FROM NOTIFICATION n
|
|---|
| 212 | JOIN PASSENGER p ON n.PASSENGER_ID = p.PASSENGER_ID;
|
|---|
| 213 |
|
|---|
| 214 | -- патници по возилo
|
|---|
| 215 | CREATE VIEW VW_VEHICLE_OCCUPANCY_STATS AS
|
|---|
| 216 | SELECT
|
|---|
| 217 | v.VEHICLE_ID,
|
|---|
| 218 | v.REGISTRATION_NUMBER,
|
|---|
| 219 | AVG(cl.PASSENGER_COUNT) AS AVG_PASSENGERS,
|
|---|
| 220 | MAX(cl.PASSENGER_COUNT) AS MAX_PASSENGERS,
|
|---|
| 221 | COUNT(cl.CAPACITY_LOG_ID) AS RECORDS
|
|---|
| 222 | FROM VEHICLE v
|
|---|
| 223 | JOIN CAPACITY_LOG cl ON v.VEHICLE_ID = cl.VEHICLE_ID
|
|---|
| 224 | GROUP BY v.VEHICLE_ID, v.REGISTRATION_NUMBER;
|
|---|
| 225 |
|
|---|
| 226 | -- Активни subscription pass картички по патник
|
|---|
| 227 | CREATE VIEW VW_PASSENGER_ACTIVE_PASSES AS
|
|---|
| 228 | SELECT
|
|---|
| 229 | sp.PASS_ID,
|
|---|
| 230 | sp.PASSENGER_ID,
|
|---|
| 231 | p.FIRST_NAME || ' ' || p.LAST_NAME AS PASSENGER_NAME,
|
|---|
| 232 | sp.PASS_TYPE,
|
|---|
| 233 | z.ZONE_NAME,
|
|---|
| 234 | sp.START_DATE,
|
|---|
| 235 | sp.END_DATE,
|
|---|
| 236 | (sp.END_DATE - CURRENT_DATE) AS DAYS_REMAINING,
|
|---|
| 237 | sp.STATUS,
|
|---|
| 238 | sp.PRICE
|
|---|
| 239 | FROM SUBSCRIPTION_PASS sp
|
|---|
| 240 | JOIN PASSENGER p ON sp.PASSENGER_ID = p.PASSENGER_ID
|
|---|
| 241 | LEFT JOIN ZONE z ON sp.ZONE_ID = z.ZONE_ID
|
|---|
| 242 | WHERE sp.STATUS = 'ACTIVE'
|
|---|
| 243 | AND sp.END_DATE >= CURRENT_DATE;
|
|---|
| 244 |
|
|---|
| 245 | -- Следни возења по постојка (за Next Departure и Journey Planner)
|
|---|
| 246 | CREATE VIEW VW_UPCOMING_TRIPS_BY_STOP AS
|
|---|
| 247 | SELECT
|
|---|
| 248 | s.STOP_ID,
|
|---|
| 249 | s.STOP_NAME,
|
|---|
| 250 | s.LATITUDE,
|
|---|
| 251 | s.LONGITUDE,
|
|---|
| 252 | z.ZONE_NAME,
|
|---|
| 253 | r.ROUTE_ID,
|
|---|
| 254 | r.ROUTE_NAME,
|
|---|
| 255 | t.TRIP_ID,
|
|---|
| 256 | t.TRIP_DATE,
|
|---|
| 257 | t.TRIP_HEADSIGN,
|
|---|
| 258 | t.DIRECTION_ID,
|
|---|
| 259 | st.STOP_SEQUENCE,
|
|---|
| 260 | st.ARRIVAL_TIME,
|
|---|
| 261 | st.DEPARTURE_TIME,
|
|---|
| 262 | vt.TYPE_NAME AS VEHICLE_TYPE,
|
|---|
| 263 | v.REGISTRATION_NUMBER,
|
|---|
| 264 | t.STATUS AS TRIP_STATUS,
|
|---|
| 265 | CASE
|
|---|
| 266 | WHEN t.TRIP_DATE = CURRENT_DATE
|
|---|
| 267 | THEN EXTRACT(EPOCH FROM (st.DEPARTURE_TIME - LOCALTIME)) / 60
|
|---|
| 268 | ELSE NULL
|
|---|
| 269 | END AS MINUTES_UNTIL_DEPARTURE
|
|---|
| 270 | FROM STOP_TIME st
|
|---|
| 271 | JOIN STOPS s ON st.STOP_ID = s.STOP_ID
|
|---|
| 272 | JOIN TRIP t ON st.TRIP_ID = t.TRIP_ID
|
|---|
| 273 | JOIN ROUTE r ON t.ROUTE_ID = r.ROUTE_ID
|
|---|
| 274 | JOIN VEHICLE v ON t.VEHICLE_ID = v.VEHICLE_ID
|
|---|
| 275 | LEFT JOIN ZONE z ON s.ZONE_ID = z.ZONE_ID
|
|---|
| 276 | LEFT JOIN VEHICLE_TYPE vt ON t.VEHICLE_TYPE_ID = vt.VEHICLE_TYPE_ID
|
|---|
| 277 | WHERE t.STATUS IN ('SCHEDULED', 'IN_PROGRESS')
|
|---|
| 278 | AND t.TRIP_DATE = CURRENT_DATE
|
|---|
| 279 | AND st.DEPARTURE_TIME >= LOCALTIME
|
|---|
| 280 | ORDER BY s.STOP_ID, st.DEPARTURE_TIME;
|
|---|
| 281 |
|
|---|
| 282 | -- Потрошувачка на гориво по возило
|
|---|
| 283 | CREATE VIEW VW_FUEL_CONSUMPTION AS
|
|---|
| 284 | SELECT
|
|---|
| 285 | vi.VEHICLE_ID,
|
|---|
| 286 | vi.REGISTRATION_NUMBER,
|
|---|
| 287 | vi.VEHICLE_TYPE,
|
|---|
| 288 | vi.VEHICLE_STATUS,
|
|---|
| 289 | COUNT(fl.FUEL_LOG_ID) AS TOTAL_REFUELS,
|
|---|
| 290 | SUM(fl.FUEL_AMOUNT) AS TOTAL_FUEL_L,
|
|---|
| 291 | AVG(fl.FUEL_AMOUNT) AS AVG_FUEL_PER_REFUEL_L,
|
|---|
| 292 | SUM(fl.FUEL_COST) AS TOTAL_FUEL_COST,
|
|---|
| 293 | AVG(fl.FUEL_COST) AS AVG_FUEL_COST,
|
|---|
| 294 | MAX(fl.FUEL_DATE) AS LAST_REFUEL_DATE,
|
|---|
| 295 | SUM(CASE WHEN fl.FUEL_DATE >= CURRENT_DATE - INTERVAL '30 days'
|
|---|
| 296 | THEN fl.FUEL_AMOUNT ELSE 0 END) AS FUEL_L_LAST_30_DAYS,
|
|---|
| 297 | SUM(CASE WHEN fl.FUEL_DATE >= CURRENT_DATE - INTERVAL '30 days'
|
|---|
| 298 | THEN fl.FUEL_COST ELSE 0 END) AS COST_LAST_30_DAYS
|
|---|
| 299 | FROM VW_VEHICLE_INFO vi
|
|---|
| 300 | LEFT JOIN FUEL_LOG fl ON vi.VEHICLE_ID = fl.VEHICLE_ID
|
|---|
| 301 | GROUP BY vi.VEHICLE_ID, vi.REGISTRATION_NUMBER, vi.VEHICLE_TYPE, vi.VEHICLE_STATUS;
|
|---|
| 302 |
|
|---|
| 303 | -- постојка + име на зона; PK на STOPS е composite па се задржуваат двете колони
|
|---|
| 304 | CREATE VIEW VW_STOP_INFO AS
|
|---|
| 305 | SELECT
|
|---|
| 306 | s.STOP_ID,
|
|---|
| 307 | s.VEHICLE_TYPE_ID,
|
|---|
| 308 | s.STOP_NAME,
|
|---|
| 309 | s.LATITUDE,
|
|---|
| 310 | s.LONGITUDE,
|
|---|
| 311 | s.ZONE_ID,
|
|---|
| 312 | z.ZONE_NAME
|
|---|
| 313 | FROM STOPS s
|
|---|
| 314 | LEFT JOIN ZONE z ON s.ZONE_ID = z.ZONE_ID;
|
|---|
| 315 |
|
|---|
| 316 | -- возач + неговите лични податоци од EMPLOYEE
|
|---|
| 317 | CREATE VIEW VW_DRIVER_INFO AS
|
|---|
| 318 | SELECT
|
|---|
| 319 | d.DRIVER_ID,
|
|---|
| 320 | d.EMPLOYEE_ID,
|
|---|
| 321 | e.FIRST_NAME || ' ' || e.LAST_NAME AS DRIVER_NAME,
|
|---|
| 322 | e.PHONE,
|
|---|
| 323 | e.EMAIL,
|
|---|
| 324 | e.STATUS AS EMPLOYEE_STATUS,
|
|---|
| 325 | d.LICENSE_NUMBER,
|
|---|
| 326 | d.LICENSE_CATEGORY,
|
|---|
| 327 | d.LICENSE_EXPIRY_DATE,
|
|---|
| 328 | d.YEARS_EXPERIENCE
|
|---|
| 329 | FROM DRIVER d
|
|---|
| 330 | JOIN EMPLOYEE e ON d.EMPLOYEE_ID = e.EMPLOYEE_ID;
|
|---|
| 331 |
|
|---|
| 332 | -- кондуктор + неговите лични податоци од EMPLOYEE
|
|---|
| 333 | CREATE VIEW VW_CONDUCTOR_INFO AS
|
|---|
| 334 | SELECT
|
|---|
| 335 | c.CONDUCTOR_ID,
|
|---|
| 336 | c.EMPLOYEE_ID,
|
|---|
| 337 | e.FIRST_NAME || ' ' || e.LAST_NAME AS CONDUCTOR_NAME,
|
|---|
| 338 | e.PHONE,
|
|---|
| 339 | e.EMAIL,
|
|---|
| 340 | e.STATUS AS EMPLOYEE_STATUS,
|
|---|
| 341 | c.CERTIFICATION_NUMBER,
|
|---|
| 342 | c.HIRE_ROLE_DATE
|
|---|
| 343 | FROM CONDUCTOR c
|
|---|
| 344 | JOIN EMPLOYEE e ON c.EMPLOYEE_ID = e.EMPLOYEE_ID;
|
|---|
| 345 |
|
|---|
| 346 |
|
|---|
| 347 | CREATE VIEW VW_VEHICLE_INFO AS
|
|---|
| 348 | SELECT
|
|---|
| 349 | v.VEHICLE_ID,
|
|---|
| 350 | v.REGISTRATION_NUMBER,
|
|---|
| 351 | v.MODEL,
|
|---|
| 352 | v.MANUFACTURER,
|
|---|
| 353 | v.CAPACITY,
|
|---|
| 354 | v.YEAR_OF_MANUFACTURE,
|
|---|
| 355 | v.STATUS AS VEHICLE_STATUS,
|
|---|
| 356 | v.VEHICLE_TYPE_ID,
|
|---|
| 357 | vt.TYPE_NAME AS VEHICLE_TYPE
|
|---|
| 358 | FROM VEHICLE v
|
|---|
| 359 | LEFT JOIN VEHICLE_TYPE vt ON v.VEHICLE_TYPE_ID = vt.VEHICLE_TYPE_ID;
|
|---|