All Downloads are FREE. Search and download functionalities are using the official Maven repository.

sql-script.lam_examples.sql Maven / Gradle / Ivy

CREATE DATABASE lam_test;
use lam_test;


DROP TABLE IF EXISTS role;
CREATE TABLE role(
  role_id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
  name varchar(100)
);


INSERT role(name)VALUES("Admin"), ("Lecturer"), ("Student");

DROP TABLE IF EXISTS reg_user;
CREATE TABLE reg_user(
  reg_user_id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
  given_name varchar(100),
  middle_name varchar(100),
  family_name varchar(100),
  gender char(1),
  data_birth DATE,
  role int NOT NULL,
  FOREIGN KEY(role) 
     REFERENCES role(role_id)
);


INSERT INTO reg_user(given_name, family_name,
   gender, role) VALUES ("Aldiyar", "Zagitov Yerzhanovich", "M", 3);

INSERT INTO reg_user(given_name, middle_name, family_name,
   gender, role) VALUES ("Trung", "Quốc", "Phạm", "M", 3);

INSERT INTO reg_user(given_name, middle_name, family_name, 
   gender, data_birth, role) VALUES("Manuel", "Garcia", "Clavel", "M", "1969-09-05", 2);

INSERT INTO reg_user(given_name, middle_name, family_name, 
   gender, data_birth, role) VALUES("Jaime", "Nubiola", "Aguilar", "M", "1959-09-05", 2);

INSERT INTO reg_user(given_name, middle_name, family_name, 
   gender, role) VALUES("Trang", "Thi Thuy", "Nguyen", "F", 1);

DROP TABLE IF EXISTS course;
CREATE TABLE course (
  course_id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
  name varchar(100)
) ENGINE=InnoDB;

INSERT course(name)VALUES("System Architecture");
INSERT course(name)VALUES("Distributed Systems");
INSERT course(name)VALUES("Software Engineering");


DROP TABLE IF EXISTS student;
CREATE TABLE student (
  student_id int NOT NULL AUTO_INCREMENT  PRIMARY KEY,
  reg_user int,
  FOREIGN KEY (reg_user) 
     REFERENCES reg_user(reg_user_id)
) ENGINE=InnoDB;

INSERT INTO student(reg_user) VALUES (1);
INSERT INTO student(reg_user) VALUES (3);


DROP TABLE IF EXISTS course_student;
CREATE TABLE course_student (
  course int,
  student int,
  FOREIGN KEY (course) 
     REFERENCES course(course_id),
  FOREIGN KEY (student) 
     REFERENCES student(student_id)
) ENGINE=InnoDB;


INSERT INTO course_student VALUES (1,1);


DROP TABLE IF EXISTS lecturer;
CREATE TABLE lecturer (
  lecturer_id int NOT NULL AUTO_INCREMENT  PRIMARY KEY,
  reg_user int,
  FOREIGN KEY (reg_user) 
     REFERENCES reg_user(reg_user_id)
) ENGINE=InnoDB;


INSERT INTO lecturer(reg_user) VALUES (2);


DROP TABLE IF EXISTS course_lecturer;
CREATE TABLE course_lecturer (
  course int,
  lecturer int,
  FOREIGN KEY (course) 
     REFERENCES course(course_id),
  FOREIGN KEY (lecturer) 
     REFERENCES lecturer(lecturer_id)
) ENGINE=InnoDB;


INSERT INTO course_lecturer VALUES (1,1);


DROP PROCEDURE IF EXISTS GetCourseStudentList;
DELIMITER //
CREATE PROCEDURE GetCourseStudentList(IN course_id INT, IN caller_id INT)
BEGIN
	SELECT family_name 
	FROM reg_user
	INNER JOIN 
	(SELECT reg_user FROM Student
	INNER JOIN
	(SELECT student FROM course_student
	WHERE course_student.course = course_id) AS TEMP_1
	ON student_id = TEMP_1.student) AS TEMP_2
	ON TEMP_2.reg_user = reg_user_id;
END //
DELIMITER ;

DROP PROCEDURE IF EXISTS GetLecturerCourseList;
DELIMITER //
CREATE PROCEDURE GetLecturerCourseList(IN lecturer_id INT, IN caller_id INT)
 BEGIN
    SELECT  name
  	FROM course
  	INNER JOIN 
  	(SELECT course FROM course_lecturer
  	WHERE course_lecturer.lecturer = lecturer_id) AS TEMP
    ON course_id = TEMP.course;
END //
DELIMITER ;


SELECT TEMP_8.item OR TEMP_9.item AS item INTO result 
FROM 
  (SELECT TEMP_2.item OR TEMP_7.item AS item 
   FROM  
     (SELECT TEMP_0.item = TEMP_1.item AS item 
      FROM (SELECT kself AS item) AS TEMP_0, 
           (SELECT kcaller AS item) AS TEMP_1)
     AS TEMP_2, 
     (SELECT TEMP_5.item = TEMP_6.item AS item 
     FROM 
       (SELECT emailPrivacy AS item  
        FROM (SELECT * FROM Reg_User) AS TEMP_4 
        RIGHT JOIN (SELECT kself AS item) AS TEMP_3 
        ON TEMP_4.Reg_User_id = TEMP_3.item) 
        AS TEMP_5, 
		(SELECT 'Public' AS item) AS TEMP_6)
  AS TEMP_7) 
AS TEMP_8, 
(SELECT (5) AS item) AS TEMP_9;


SELECT TEMP_13.item AND TEMP_18.item AS item INTO result 
FROM 
(SELECT TEMP_8.item OR TEMP_12.item AS item 
   FROM 
    (SELECT TEMP_2.item OR TEMP_7.item AS item FROM 
         (SELECT TEMP_0.item = TEMP_1.item AS item 
              FROM (SELECT kself AS item) AS TEMP_0, 
         (SELECT kcaller AS item) AS TEMP_1) AS TEMP_2, 
         (SELECT TEMP_5.item = TEMP_6.item AS item 
              FROM 
                 (SELECT emailPrivacy AS item 
                      FROM (SELECT * FROM Reg_User) AS TEMP_4 
                       RIGHT JOIN (SELECT kself AS item) AS TEMP_3 
                        ON TEMP_4.Reg_User_id = TEMP_3.item) AS TEMP_5, 
                        (SELECT 'Public' AS item) AS TEMP_6) AS TEMP_7) AS TEMP_8, 
                        (SELECT COUNT(TEMP_11.item) > 0 AS item 
                        FROM (SELECT myFriends AS item 
                        FROM (SELECT * FROM Reg_User_Reg_User) AS TEMP_10 
                        RIGHT JOIN (SELECT kcaller AS item) AS TEMP_9 
                        ON TEMP_10.friendOf = TEMP_9.item) 
                        AS TEMP_11) AS TEMP_12)
                 AS TEMP_13, 
     (SELECT TEMP_16.item = TEMP_17.item AS item FROM 
                        (SELECT emailPrivacy AS item 
                        FROM (SELECT * FROM Reg_User) AS TEMP_15 
                        RIGHT JOIN (SELECT kself AS item) AS TEMP_14 
                        ON TEMP_15.Reg_User_id = TEMP_14.item) AS TEMP_16, 
         (SELECT 'Friends' AS item) 
         AS TEMP_17) AS TEMP_18;


DROP PROCEDURE IF EXISTS GetLecturerCourseStudentList;
DELIMITER //
CREATE PROCEDURE GetLecturerCourseStudentList(IN lecturer_id INT, course_id INT, IN caller_id INT)
 BEGIN
	SELECT family_name 
	FROM reg_user
	INNER JOIN
   	(SELECT reg_user 
  	FROM student
  	INNER JOIN
  	(SELECT student FROM course_student
  	INNER JOIN 
  	(SELECT course FROM course_lecturer 
  	WHERE course = course_id AND lecturer = lecturer_id) AS TEMP_1
  	ON course_student.course = TEMP_1.course) as TEMP_2 
  	ON student_id = TEMP_2.student) AS TEMP_3
  	ON TEMP_3.reg_user = reg_user_id;
  	END //
DELIMITER ;

/* examples
 * CALL GetCourseStudentList(1, 1, 3)
 * CALL GetLecturerCourseList(1, 1, 3)
 * CALL GetLecturerCourseStudentList(1, 1, 3)
 */





© 2015 - 2025 Weber Informatics LLC | Privacy Policy