Advertisement
Maks140888

Untitled

Jun 8th, 2022
1,476
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 2.18 KB | None | 0 0
  1. CREATE OR REPLACE FUNCTION compare_lessons(d_week DATE, teacher VARCHAR)
  2. returns VARCHAR AS $$
  3. DECLARE
  4.     lesson1 VARCHAR(100);
  5.     lesson2 VARCHAR(100);
  6.     lesson3 VARCHAR(100);
  7.     lesson4 VARCHAR(100);
  8.     lesson5 VARCHAR(100);
  9.     lesson6 VARCHAR(100);
  10. BEGIN
  11.     SELECT c.name INTO lesson1 FROM coprs c, audiences a, sheldule h, teachers t
  12.     WHERE c.id = a.corp_id
  13.         AND a.id = h.audience_id
  14.         AND t.id = h.teacher_id
  15.         AND t.name = teacher
  16.         AND h.day_week = d_week
  17.         AND h.lesson_id = '1';
  18.    
  19.     SELECT c.name INTO lesson2 FROM coprs c, audiences a, sheldule h, teachers t
  20.     WHERE c.id = a.corp_id
  21.         AND a.id = h.audience_id
  22.         AND t.id = h.teacher_id
  23.         AND t.name = teacher
  24.         AND h.day_week = d_week
  25.         AND h.lesson_id = '2';
  26.        
  27.     SELECT c.name INTO lesson3 FROM coprs c, audiences a, sheldule h, teachers t
  28.     WHERE c.id = a.corp_id
  29.         AND a.id = h.audience_id
  30.         AND t.id = h.teacher_id
  31.         AND t.name = teacher
  32.         AND h.day_week = d_week
  33.         AND h.lesson_id = '3';
  34.        
  35.     SELECT c.name INTO lesson1 FROM coprs c, audiences a, sheldule h, teachers t
  36.     WHERE c.id = a.corp_id
  37.         AND a.id = h.audience_id
  38.         AND t.id = h.teacher_id
  39.         AND t.name = teacher
  40.         AND h.day_week = d_week
  41.         AND h.lesson_id = '4';
  42.        
  43.     SELECT c.name INTO lesson5 FROM coprs c, audiences a, sheldule h, teachers t
  44.     WHERE c.id = a.corp_id
  45.         AND a.id = h.audience_id
  46.         AND t.id = h.teacher_id
  47.         AND t.name = teacher
  48.         AND h.day_week = d_week
  49.         AND h.lesson_id = '5';
  50.    
  51.     SELECT c.name INTO lesson1 FROM coprs c, audiences a, sheldule h, teachers t
  52.     WHERE c.id = a.corp_id
  53.         AND a.id = h.audience_id
  54.         AND t.id = h.teacher_id
  55.         AND t.name = teacher
  56.         AND h.day_week = d_week
  57.         AND h.lesson_id = '6';
  58.        
  59.     IF(lesson1 != lesson2)OR(lesson2 != lesson3)OR(lesson3 != lesson4)OR(lesson4 != lesson5)OR(lesson5 != lesson6)
  60.     THEN
  61.         RETURN teacher;
  62.     ELSE
  63.         RETURN 'none';
  64.     END IF;
  65. END;
  66. $$  LANGUAGE plpgsql;
  67.  
  68. SELECT DISTINCT compare_lessons(h.day_date, t.name) FROM sheldule h, teachers t, audiences a, corps c
  69. WHERE t.id = h.teacher_id
  70.     AND c.id = a.corp_id
  71.     AND a.id = h.audience_id
  72.     AND h.day_date BETWEEN TO_DATE('2022-01-07','YYYY-MM-DD') AND TO_DATE('2022-07-01','YYYY-MM-DD')
  73.     AND compare_lessons(h.day_date, t.name) != 'none';
  74.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement