Advertisement
Radoslav_03

9 lab

Apr 15th, 2024
708
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 2.37 KB | None | 0 0
  1. -- 1 зад
  2. DELIMITER //
  3. CREATE TRIGGER salarypayments_delete_trigger
  4. AFTER DELETE ON salaryPayments
  5. FOR EACH ROW
  6. BEGIN
  7.     INSERT INTO salarypayments_log (
  8.         operation,
  9.         old_coach_id,
  10.         old_month,
  11.         old_year,
  12.         old_salaryAmount,
  13.         old_dateOfPayment,
  14.         dateOfLog
  15.     )
  16.     VALUES (
  17.         'DELETE',
  18.         OLD.coach_id,
  19.         OLD.month,
  20.         OLD.year,
  21.         OLD.salaryAmount,
  22.         OLD.dateOfPayment,
  23.         NOW()
  24.     );
  25. END;
  26. //
  27. DELIMITER ;
  28.  
  29.  
  30. -- 2 зад
  31. DELETE FROM salaryPayments;
  32. INSERT INTO salaryPayments (coach_id, month, year, salaryAmount, dateOfPayment)
  33. SELECT old_coach_id, old_month, old_year, old_salaryAmount, old_dateOfPayment
  34. FROM salarypayments_log
  35. WHERE operation = 'DELETE';
  36.  
  37.  
  38. -- 3 зад
  39. DELIMITER //
  40. CREATE TRIGGER before_insert_student_sport_trigger
  41. BEFORE INSERT ON student_sport
  42. FOR EACH ROW
  43. BEGIN
  44.     DECLARE group_count INT;
  45.  
  46.     SELECT COUNT(*) INTO group_count
  47.     FROM student_sport
  48.     WHERE student_id = NEW.student_id;
  49.  
  50.     IF group_count >= 2 THEN
  51.         SIGNAL SQLSTATE '45000'
  52.         SET MESSAGE_TEXT = 'Ученикът вече участва в две групи. Не може да бъде добавен в още една група.';
  53.     END IF;
  54. END;
  55. //
  56. DELIMITER ;
  57.  
  58.  
  59. -- 4 зад
  60. CREATE VIEW students_info AS
  61. SELECT s.name AS student_name, COUNT(ss.student_id) AS group_count
  62. FROM students s
  63. JOIN student_sport ss ON s.id = ss.student_id
  64. GROUP BY s.id;
  65. SELECT * FROM students_info;
  66.  
  67.  
  68. -- 5 зад
  69. DELIMITER //
  70. CREATE PROCEDURE GetStudentsByCoachName(IN coachName VARCHAR(255))
  71. BEGIN
  72.     SELECT st.name AS student_name, sg.id AS group_id, sp.name AS sport_name
  73.     FROM students st
  74.     JOIN student_sport ss ON st.id = ss.student_id
  75.     JOIN sportGroups sg ON ss.sportGroup_id = sg.id
  76.     JOIN sports sp ON sg.sport_id = sp.id
  77.     JOIN coaches c ON sg.coach_id = c.id
  78.     WHERE c.name = coachName;
  79. END//
  80. DELIMITER ;
  81. CALL GetStudentsByCoachName("Ivan Todorov Petkov");
  82.  
  83.  
  84. -- 6 зад
  85. DELIMITER //
  86. CREATE PROCEDURE GetCoachesBySportName(IN sportName VARCHAR(255))
  87. BEGIN
  88.     SELECT c.name AS coach_name, sg.location, sg.hourOfTraining, sg.dayOfWeek
  89.     FROM sportGroups sg
  90.     JOIN coaches c ON sg.coach_id = c.id
  91.     JOIN sports s ON sg.sport_id = s.id
  92.     WHERE s.name = sportName;
  93. END//
  94. DELIMITER ;
  95. CALL GetCoachesBySportName("Football");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement