Advertisement
Guest User

Untitled

a guest
Jan 12th, 2017
792
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 90.71 KB | None | 0 0
  1. # drop DATABASE test3;
  2. # CREATE DATABASE test3;
  3. use test3;
  4. CREATE TABLE Schools (
  5. name VARCHAR(50),
  6. address VARCHAR(50),
  7. PRIMARY KEY (name, address),
  8. general_info VARCHAR(50),
  9. vision VARCHAR(50),
  10. mission VARCHAR(50),
  11. email VARCHAR(50),
  12. main_language VARCHAR(50),
  13. phone_number VARCHAR(50)
  14.  
  15. );
  16.  
  17.  
  18. CREATE TABLE Employees
  19. (
  20. employee_ID INTEGER AUTO_INCREMENT,
  21. PRIMARY KEY (employee_ID),
  22. first_name VARCHAR(20),
  23. middle_name VARCHAR(20),
  24. last_name VARCHAR(20),
  25. gender VARCHAR(1),
  26. birth_date DATETIME,
  27. e_address VARCHAR(50),
  28. email VARCHAR(50),
  29. username VARCHAR(20) UNIQUE,
  30. username_password VARCHAR(20),
  31. salary FLOAT,
  32. school_name VARCHAR(50),
  33. school_address VARCHAR(50),
  34. FOREIGN KEY (school_name, school_address) REFERENCES Schools (name, address)
  35. ON DELETE SET NULL
  36.  
  37. );
  38.  
  39.  
  40. CREATE TABLE Students(
  41. ssn INTEGER NOT NULL ,
  42. PRIMARY KEY (ssn),
  43. school_name VARCHAR(50),
  44. school_address varchar(50),
  45. user_name VARCHAR(50) unique,
  46. gender VARCHAR(50),
  47. name VARCHAR(50),
  48. birth_date DATETIME ,
  49. accepted int(1),
  50. password VARCHAR(50) ,
  51. age int AS (YEAR('2016-1-1') - YEAR(birth_date)) ,
  52. grade int As ((YEAR('2016-1-1') - YEAR(birth_date))-5) ,
  53. FOREIGN KEY (school_name,school_address) REFERENCES Schools (name ,address)
  54. );
  55. SELECT *
  56. FROM School_Activities;
  57. SELECT *
  58. FROM Announcements;
  59.  
  60. CREATE TABLE Types (
  61. type VARCHAR(50),
  62. school_name VARCHAR(50),
  63. address VARCHAR(50),
  64. FOREIGN KEY (school_name, address) REFERENCES Schools (name, address)
  65.  
  66. );
  67.  
  68.  
  69. CREATE TABLE Teachers (
  70. seniority_level INTEGER,
  71. first_year_of_work DATETIME,
  72. experience_year INTEGER AS (year('2016-1-1') - year(first_year_of_work)),
  73. teacher_id INTEGER,
  74.  
  75. FOREIGN KEY (teacher_id) REFERENCES Employees (employee_id)
  76. ON DELETE CASCADE
  77.  
  78. );
  79.  
  80. CREATE TABLE Parents (
  81. user_name VARCHAR(50) NOT NULL,
  82. PRIMARY KEY (user_name),
  83. password VARCHAR(50),
  84. first_name VARCHAR(50),
  85. last_name VARCHAR(50),
  86. home_phone VARCHAR(50),
  87. email VARCHAR(50),
  88. address VARCHAR(50),
  89. report_number INT -- ,
  90. -- FOREIGN KEY (report_number)REFERENCES Reports(report_number)
  91.  
  92. );
  93.  
  94.  
  95. CREATE TABLE Reports (
  96. report_number INT AUTO_INCREMENT,
  97. PRIMARY KEY (report_number),
  98. comment VARCHAR(50),
  99. content VARCHAR(50),
  100. issue_date DATETIME,
  101. reply VARCHAR(50),
  102. user_name VARCHAR(50),
  103. student_ssn INTEGER,
  104. teacher_id INTEGER ,
  105. FOREIGN KEY (user_name)REFERENCES Parents(user_name) ,
  106. FOREIGN KEY (teacher_id)REFERENCES Teachers(teacher_id),
  107. FOREIGN KEY (student_ssn)REFERENCES Students(ssn)
  108. );
  109.  
  110. ALTER TABLE Parents
  111. ADD CONSTRAINT report_number FOREIGN KEY (report_number) REFERENCES Reports (report_number);
  112. ALTER TABLE Reports
  113. ADD CONSTRAINT user_name FOREIGN KEY (user_name) REFERENCES Parents (user_name);
  114. ALTER TABLE Reports
  115. ADD CONSTRAINT teacher_id FOREIGN KEY (teacher_id) REFERENCES Teachers (teacher_id);
  116. ALTER TABLE Reports
  117. ADD CONSTRAINT student_ssn FOREIGN KEY (student_ssn) REFERENCES Students (ssn);
  118.  
  119. CREATE TABLE Parents_apply_Students_Schools (
  120. accept TINYINT,
  121. parent_user_name VARCHAR(50),
  122. student_ssn INTEGER,
  123. school_name VARCHAR(20),
  124. PRIMARY KEY (student_ssn,school_name,parent_user_name),
  125. FOREIGN KEY (student_ssn) REFERENCES Students (ssn),
  126. FOREIGN KEY (school_name) REFERENCES Schools (name),
  127. FOREIGN KEY (parent_user_name) REFERENCES Parents (user_name)
  128. );
  129.  
  130. CREATE TABLE Teachers_supervises_Teachers (
  131.  
  132. teacher_id1 INTEGER,
  133. teacher_id2 INTEGER,
  134. FOREIGN KEY (teacher_id1) REFERENCES Teachers (teacher_id),
  135. FOREIGN KEY (teacher_id2) REFERENCES Teachers (teacher_id)
  136. );
  137.  
  138. CREATE TABLE Courses(
  139. course_code INTEGER NOT NULL AUTO_INCREMENT,
  140. PRIMARY KEY(course_code),
  141. name VARCHAR(50) ,
  142. description VARCHAR(50) ,
  143. school_address VARCHAR(50),
  144. school_name varchar(20) ,
  145. FOREIGN KEY (school_name,school_address)REFERENCES Schools(name,address)
  146. );
  147.  
  148. CREATE TABLE High_Schools (
  149. name VARCHAR(50),
  150. address VARCHAR(50),
  151. FOREIGN KEY (name, address) REFERENCES Schools (name, address)
  152. );
  153. CREATE TABLE Mid_Schools (
  154. name VARCHAR(50),
  155. address VARCHAR(50),
  156. FOREIGN KEY (name, address) REFERENCES Schools (name, address)
  157.  
  158. );
  159. CREATE TABLE Elementary_Schools (
  160. name VARCHAR(50),
  161. address VARCHAR(50),
  162. FOREIGN KEY (name, address) REFERENCES Schools (name, address)
  163.  
  164. );
  165. CREATE TABLE Required_Supplies (
  166. required_supplies VARCHAR(50),
  167. name VARCHAR(50),
  168. address VARCHAR(50),
  169. FOREIGN KEY (name, address) REFERENCES Schools (name, address)
  170.  
  171. );
  172.  
  173. CREATE TABLE Adminstrators (
  174. adminstrator_id INTEGER AUTO_INCREMENT,
  175. FOREIGN KEY (adminstrator_id) REFERENCES Employees (employee_id)
  176. ON DELETE CASCADE
  177.  
  178. );
  179.  
  180. CREATE TABLE Announcements (
  181.  
  182. date DATETIME,
  183. title VARCHAR(50),
  184. description VARCHAR(50),
  185. type VARCHAR(50),
  186. employee_id INTEGER,
  187. FOREIGN KEY (employee_id) REFERENCES Adminstrators (adminstrator_id)
  188. );
  189.  
  190.  
  191. CREATE TABLE School_Activities
  192. (
  193. activity_Date DATETIME,
  194. location VARCHAR(200),
  195. PRIMARY KEY (activity_Date, location),
  196. teacher_id INT,
  197. adminstrator_id INT,
  198. name VARCHAR(50),
  199. equipment VARCHAR(50),
  200. type VARCHAR(50),
  201. description VARCHAR(50),
  202. FOREIGN KEY (adminstrator_id) REFERENCES Adminstrators (adminstrator_id),
  203. FOREIGN KEY (teacher_id) REFERENCES Teachers (teacher_id)
  204. );
  205.  
  206. CREATE TABLE Assignments (
  207.  
  208. assignment_number INTEGER AUTO_INCREMENT,
  209. PRIMARY KEY (assignment_number),
  210. posting_date DATETIME,
  211. due_date DATETIME,
  212. content VARCHAR(50)
  213.  
  214. );
  215.  
  216. CREATE TABLE Activities_Involve_Students (
  217. student_ssn INTEGER,
  218. activity_Date DATETIME,
  219. location VARCHAR(200),
  220. PRIMARY KEY (student_ssn,activity_Date,location),
  221. FOREIGN KEY (student_ssn) REFERENCES Students (ssn),
  222. FOREIGN KEY (activity_Date, location) REFERENCES School_Activities (activity_Date, location)
  223. );
  224.  
  225.  
  226. CREATE TABLE Mobile_numbers (
  227. mobile VARCHAR(50),
  228. parent_user_name VARCHAR(50),
  229. FOREIGN KEY (parent_user_name) REFERENCES Parents (user_name)
  230. );
  231.  
  232. CREATE TABLE Levels (
  233. level VARCHAR(50),
  234. PRIMARY KEY (level)
  235. );
  236.  
  237. set FOREIGN_KEY_CHECKS =0;
  238. drop TABLE Levels_offer_Schools;
  239. CREATE TABLE Levels_offer_Schools (
  240. level VARCHAR(50),
  241. school_name VARCHAR(50),
  242. school_address VARCHAR(50),
  243. FOREIGN KEY (level) REFERENCES Levels (level),
  244. FOREIGN KEY (school_name, school_address) REFERENCES Schools (name, address)
  245.  
  246. );
  247. set FOREIGN_KEY_CHECKS =1;
  248.  
  249.  
  250. CREATE TABLE Courses_offer_Levels (
  251. grade INTEGER,
  252. level VARCHAR(50),
  253. course_code INTEGER,
  254. PRIMARY KEY (level,course_code),
  255. FOREIGN KEY (level) REFERENCES Levels (level),
  256. FOREIGN KEY (course_code) REFERENCES Courses (course_code)
  257. );
  258.  
  259.  
  260.  
  261. CREATE TABLE Administrators_Assigns_Teachers
  262. (
  263. teacher_id INT,
  264. adminstrator_id INT,
  265. name VARCHAR(50),
  266. activity_Date DATETIME,
  267. location VARCHAR(200),
  268. PRIMARY KEY (adminstrator_id,teacher_id,activity_Date,location),
  269. FOREIGN KEY (adminstrator_id) REFERENCES Adminstrators (adminstrator_id)
  270. ON DELETE CASCADE,
  271. FOREIGN KEY (teacher_id) REFERENCES Teachers (teacher_id)
  272. ON DELETE CASCADE,
  273. FOREIGN KEY (activity_Date, location) REFERENCES School_Activities (activity_Date, location)
  274. );
  275.  
  276. CREATE TABLE Questions
  277. (
  278. question_number INT PRIMARY KEY AUTO_INCREMENT,
  279. question VARCHAR(50),
  280. course_code INT,
  281. ssn INT,
  282. content VARCHAR(500),
  283. FOREIGN KEY (course_code) REFERENCES Courses (course_code)
  284. ON DELETE CASCADE,
  285. FOREIGN KEY (ssn) REFERENCES Students (ssn)
  286. ON DELETE CASCADE
  287. );
  288.  
  289. CREATE TABLE Students_Asks_Questions
  290. (
  291. ssn INT,
  292. course_code INT,
  293. question_number INT,
  294. PRIMARY KEY (course_code,ssn,question_number),
  295. FOREIGN KEY (course_code) REFERENCES Courses (course_code)
  296. ON DELETE CASCADE,
  297. FOREIGN KEY (ssn) REFERENCES Students (ssn)
  298. ON DELETE CASCADE,
  299. FOREIGN KEY (question_number) REFERENCES Questions (question_number)
  300. ON DELETE CASCADE
  301. );
  302.  
  303. CREATE TABLE Answers
  304. (
  305. answer_number INTEGER AUTO_INCREMENT,
  306. PRIMARY KEY (answer_number),
  307. answer VARCHAR(20),
  308. teacher_id INT,
  309. question_number INT,
  310. content VARCHAR(500),
  311. FOREIGN KEY (teacher_id) REFERENCES Teachers (teacher_id)
  312. ON DELETE CASCADE,
  313. FOREIGN KEY (question_number) REFERENCES Questions (question_number)
  314. ON DELETE CASCADE
  315. );
  316.  
  317. CREATE TABLE Questions_isPartOf_Courses
  318. (
  319. course_code INTEGER,
  320. answer_number INT,
  321. question_number INT,
  322. PRIMARY KEY (course_code,question_number,answer_number),
  323. FOREIGN KEY (course_code) REFERENCES Courses (course_code)
  324. ON DELETE CASCADE,
  325. FOREIGN KEY (question_number) REFERENCES Questions (question_number)
  326. ON DELETE CASCADE,
  327. FOREIGN KEY (answer_number) REFERENCES Answers (answer_number)
  328. ON DELETE CASCADE
  329. );
  330.  
  331.  
  332. CREATE TABLE grade
  333. (
  334. teacher_id INT,
  335. assignment_number INT,
  336. course_code INT,
  337. student_grade INT,
  338. PRIMARY KEY (teacher_id,course_code,assignment_number),
  339. FOREIGN KEY (teacher_id) REFERENCES Teachers (teacher_id)
  340. ON DELETE CASCADE,
  341. FOREIGN KEY (course_code) REFERENCES Courses (course_code)
  342. ON DELETE CASCADE,
  343. FOREIGN KEY (assignment_number) REFERENCES Assignments (assignment_number)
  344. ON DELETE CASCADE
  345. );
  346.  
  347. CREATE TABLE Courses_has_prerequisite_Courses (
  348. course_code1 INTEGER,
  349. course_code2 INTEGER,
  350. PRIMARY KEY (course_code1,course_code2),
  351. FOREIGN KEY (course_code1) REFERENCES Courses (course_code),
  352. FOREIGN KEY (course_code2) REFERENCES Courses (course_code)
  353.  
  354. );
  355.  
  356. CREATE TABLE Assignments_postedBy_Teachers (
  357. teacher_id INT,
  358. course_code INT,
  359. assignment_number INTEGER,
  360. PRIMARY KEY (teacher_id,course_code,assignment_number),
  361. FOREIGN KEY (teacher_id) REFERENCES Teachers (teacher_id)
  362. ON DELETE CASCADE,
  363. FOREIGN KEY (course_code) REFERENCES Courses (course_code)
  364. ON DELETE CASCADE,
  365. FOREIGN KEY (assignment_number) REFERENCES Assignments (assignment_number)
  366. );
  367.  
  368. CREATE TABLE Parents_reply_Reports (
  369. reply VARCHAR(50),
  370. user_name VARCHAR(50),
  371. teacher_id INTEGER,
  372. PRIMARY KEY (user_name,teacher_id),
  373. FOREIGN KEY (user_name) REFERENCES Parents (user_name),
  374. FOREIGN KEY (teacher_id) REFERENCES Teachers (teacher_id)
  375.  
  376. );
  377.  
  378.  
  379. CREATE TABLE Parents_rateAndreview_Teachers (
  380. rating INT ,
  381. rate INTEGER,
  382. teacher_id INT,
  383. parent VARCHAR(50),
  384. PRIMARY KEY (teacher_id,parent),
  385. FOREIGN KEY (teacher_id) REFERENCES Teachers (teacher_id),
  386. FOREIGN KEY (parent) REFERENCES Parents (user_name)
  387. );
  388.  
  389.  
  390. CREATE TABLE Parents_rateAndreview_Schools (
  391. rate INT ,
  392. review VARCHAR(50),
  393. parent_username VARCHAR(50),
  394. school_name VARCHAR(50),
  395. school_address VARCHAR(50),
  396. PRIMARY KEY (parent_username,school_name,school_address),
  397. FOREIGN KEY (parent_username) REFERENCES Parents (user_name),
  398. FOREIGN KEY (school_name, school_address) REFERENCES Schools (name, address)
  399. );
  400.  
  401. CREATE TABLE Clubs (
  402. club_name VARCHAR(50),
  403. PRIMARY KEY (club_name),
  404. purpose VARCHAR(50),
  405. school_address VARCHAR(200),
  406. school_name VARCHAR(50),
  407. FOREIGN KEY (school_name, school_address) REFERENCES Schools (name, address)
  408. ON DELETE SET NULL
  409. );
  410.  
  411. CREATE TABLE Clubs_joinBy_Students (
  412. ssn INT,
  413. club_name VARCHAR(50),
  414. PRIMARY KEY (ssn,club_name),
  415. FOREIGN KEY (ssn) REFERENCES Students (ssn),
  416. FOREIGN KEY (club_name) REFERENCES Clubs (club_name)
  417. );
  418.  
  419. CREATE TABLE Students_taughtBy_Teachers (
  420. ssn INT DEFAULT 1111,
  421.  
  422. course_code INTEGER,
  423. teacher_id INT,
  424. PRIMARY KEY (ssn,course_code),
  425. FOREIGN KEY (ssn) REFERENCES Students (ssn)
  426. ON DELETE CASCADE,
  427. FOREIGN KEY (teacher_id) REFERENCES Teachers (teacher_id)
  428. ON DELETE CASCADE,
  429. FOREIGN KEY (course_code) REFERENCES Courses (course_code)
  430. ON DELETE CASCADE
  431. );
  432.  
  433. CREATE TABLE Students_Enrolled_Schools (
  434. ssn INTEGER,
  435. school_name VARCHAR(50),
  436. school_address VARCHAR(50),
  437. PRIMARY KEY (ssn,school_address,school_name),
  438. FOREIGN KEY (ssn) REFERENCES Students (ssn),
  439. FOREIGN KEY (school_name, school_address) REFERENCES Schools (name, address)
  440.  
  441. );
  442.  
  443.  
  444. CREATE TABLE Assignments_gradedBy_Teachers_Students (
  445. grade INTEGER,
  446. assignment_number INTEGER,
  447. student_ssn INTEGER,
  448. teacher_id INTEGER,
  449. PRIMARY KEY (student_ssn,assignment_number),
  450. FOREIGN KEY (student_ssn) REFERENCES Students (ssn),
  451. FOREIGN KEY (assignment_number) REFERENCES Assignments (assignment_number),
  452. FOREIGN KEY (teacher_id) REFERENCES Teachers (teacher_id)
  453.  
  454. );
  455.  
  456. CREATE TABLE Assignments_solve_Students(
  457. solution VARCHAR(50),
  458. grade int ,
  459. student_ssn INTEGER ,
  460. assignment_number INTEGER default 0 ,
  461. PRIMARY KEY (student_ssn,assignment_number),
  462. FOREIGN KEY (student_ssn)REFERENCES Students(SSN),
  463. FOREIGN KEY (assignment_number) REFERENCES Assignments(assignment_number)
  464. );
  465.  
  466.  
  467. -- and done
  468. create Table Assignments_posteBy_Teachers(
  469. teacher_id int,
  470. course_code int ,
  471. assignment_number int
  472. ,PRIMARY KEY (assignment_number,course_code),
  473. FOREIGN KEY (teacher_id) REFERENCES Teachers(teacher_id) on DELETE CASCADE,
  474. FOREIGN key (course_code)REFERENCES Courses (course_code) on DELETE CASCADE,
  475. FOREIGN key (assignment_number) REFERENCES Assignments(assignment_number)
  476. );
  477. -- start of system user proc
  478. # the following 3 procedured to the following tasks respectivly name,address,type
  479. DELIMITER //
  480. CREATE PROCEDURE searchForSchoolName(name VARCHAR(50))
  481. BEGIN
  482. IF name IS NULL
  483. THEN
  484. SELECT 'We do not accept null values';
  485. ELSE
  486. SELECT *
  487. FROM Schools
  488. WHERE Schools.name = name;
  489. END IF;
  490. END //
  491. DELIMITER ;
  492.  
  493. DELIMITER //
  494. CREATE PROCEDURE searchForSchoolAddress(address VARCHAR(50))
  495. BEGIN
  496. IF address IS NULL
  497. THEN
  498. SELECT 'We do not accept null values';
  499. ELSE
  500. SELECT *
  501. FROM Schools
  502. WHERE Schools.address = address;
  503. END IF;
  504. END //
  505. DELIMITER ;
  506.  
  507.  
  508. DELIMITER //
  509. CREATE PROCEDURE searchForSchoolType(typee VARCHAR(50))
  510. BEGIN
  511. IF typee IS NULL
  512. THEN
  513. SELECT 'We do not accept null values';
  514. ELSE
  515. SELECT S.*
  516. FROM Schools S inner JOIN Types T on t.school_name = S.name and T.address = S.address
  517. WHERE T.type = typee;
  518. END IF;
  519. END //
  520. DELIMITER ;
  521.  
  522.  
  523.  
  524. drop PROCEDURE viewSchoolsByLevel;
  525. DELIMITER //
  526. CREATE PROCEDURE viewSchoolsByLevel()
  527. BEGIN
  528. SELECT
  529. S.name,
  530. S.address,
  531. los.level
  532. FROM Schools S inner join Levels_offer_Schools los on los.school_name = S.name and los.school_address = S.address
  533. GROUP BY los.level and S.name and S.address;
  534. END //
  535.  
  536. call viewSchoolsByLevel();
  537.  
  538.  
  539.  
  540. -- 3
  541. # View the information of a certain school along with the reviews written about it and teachers
  542. # teaching in this school.
  543. DELIMITER //
  544. CREATE PROCEDURE viewSchoolAndRating(sName VARCHAR(50), sAddress VARCHAR(50))
  545. BEGIN
  546. SELECT
  547. S.*,
  548. rating.rate,
  549. rating.review,
  550. rating.parent_username,
  551. E.first_name
  552. FROM Schools S INNER JOIN Parents_rateAndreview_Schools rating
  553. ON S.address = rating.school_address AND S.name = rating.school_name
  554. INNER JOIN Employees E ON E.school_address = S.address AND E.school_name = S.name
  555. INNER JOIN Teachers T ON T.teacher_id = E.employee_ID
  556. where E.first_name is not null and E.school_name = sName and E.school_address = sAddress;
  557. END //
  558.  
  559. -- 1
  560. # View all unverified teachers (those with username and password as null)
  561. DELIMITER //
  562. CREATE PROCEDURE View_Unverified_Teachers(myName VARCHAR(50), myPassword VARCHAR(50))
  563. BEGIN
  564.  
  565. DECLARE mySchoolName VARCHAR(50);
  566. DECLARE mySchoolAddress VARCHAR(50);
  567.  
  568. SELECT S.name
  569. INTO mySchoolName
  570. FROM Schools S INNER JOIN Employees E ON E.school_name = S.name AND E.school_address = S.address
  571. INNER JOIN Adminstrators A ON a.adminstrator_id = E.employee_ID
  572. WHERE E.username = myName and E.username_password = myPassword;
  573.  
  574. SELECT S.address
  575. INTO mySchoolAddress
  576. FROM Schools S INNER JOIN Employees E ON E.school_name = S.name AND E.school_address = S.address
  577. INNER JOIN Adminstrators A ON A.adminstrator_id = employee_ID
  578. WHERE E.username = myName and E.username_password = myPassword;
  579.  
  580. SELECT E.*
  581. FROM Teachers T INNER JOIN Employees E ON E.employee_ID = T.teacher_id
  582. INNER JOIN Schools S2 ON E.school_name = S2.name AND E.school_address = S2.address
  583. WHERE
  584. S2.address = mySchoolAddress AND S2.name = mySchoolName AND E.username IS NULL AND E.username_password IS NULL;
  585.  
  586. END //
  587. DELIMITER ;
  588. SELECT S.name
  589.  
  590. FROM Schools S INNER JOIN Employees E ON E.school_name = S.name AND E.school_address = S.address
  591. INNER JOIN Adminstrators A ON a.adminstrator_id = E.employee_ID
  592. WHERE E.username = 'abeer.elsayed' and E.username_password = 'blabizo';
  593. SELECT *
  594. FROM Employees;
  595.  
  596.  
  597. # Verify or assign usernames and passwords to all teacher who applied to the admin's but do not have usernames and passwords yet
  598. # A salary for this teacher is also calculated
  599.  
  600. DELIMITER //
  601. CREATE PROCEDURE Verify_Teacher(myName VARCHAR(50), myPass VARCHAR(50), tID INT, newName VARCHAR(50), newPass VARCHAR(50))
  602. BEGIN
  603. DECLARE myID int;
  604. SELECT E2.employee_ID into myID
  605. FROM Employees E2
  606. WHERE E2.username = myName and E2.username_password = myPass;
  607.  
  608. UPDATE Employees E
  609. SET E.username = newName, E.username_password = newPass
  610. WHERE E.employee_ID = tID;
  611. CALL addSalary(myID, tID);
  612.  
  613.  
  614. END //
  615.  
  616. DELIMITER ;
  617.  
  618.  
  619. # a helper procedure used to calculate the salary of a teacher
  620. DELIMITER //
  621. CREATE PROCEDURE addSalary(myID INT, tID INT)
  622. BEGIN
  623. DECLARE x INT;
  624. SELECT T.experience_year
  625. INTO x
  626. FROM Teachers T
  627. WHERE tID = T.teacher_id;
  628.  
  629. UPDATE Employees E
  630. SET E.salary = 500 * x
  631. WHERE E.employee_ID = tID;
  632.  
  633. END;
  634.  
  635. DELIMITER ;
  636.  
  637.  
  638. -- 2
  639. # DROP PROCEDURE View_Unverified_Students;
  640. # views all students who applied to the admin's school but do not have a username and a password yet
  641. DELIMITER //
  642. CREATE PROCEDURE View_Unverified_Students(myName VARCHAR(50) , myPass VARCHAR(50))
  643. BEGIN
  644. DECLARE mySchoolName VARCHAR(50);
  645. DECLARE mySchoolAddress VARCHAR(50);
  646.  
  647. SELECT S.name
  648. INTO mySchoolName
  649. FROM Schools S INNER JOIN Employees E ON E.school_name = S.name AND E.school_address = S.address
  650. INNER JOIN Adminstrators A ON A.adminstrator_id = E.employee_ID
  651. WHERE E.username = myName and E.username_password = myPass;
  652.  
  653. SELECT S.address
  654. INTO mySchoolAddress
  655. FROM Schools S INNER JOIN Employees E ON E.school_name = S.name AND E.school_address = S.address
  656. INNER JOIN Adminstrators A ON A.adminstrator_id = E.employee_ID
  657. WHERE E.username = myName and E.username_password = myPass;
  658.  
  659. SELECT S.*
  660. FROM Students S INNER JOIN Schools school ON S.school_name = school.name AND S.school_address = school.address
  661. WHERE
  662. school.address = mySchoolAddress AND school.name = mySchoolName AND S.user_name IS NULL AND S.password IS NULL;
  663.  
  664. END //
  665. use test3;
  666. INSERT INTO Students (ssn, school_name, school_address)
  667. VALUES (32352854,'El rowad','8 Mostafa El Nahhas');
  668. SELECT *
  669. FROM Schools;
  670. SELECT *
  671. FROM Employees;
  672. SELECT *
  673. FROM Students;
  674.  
  675. DELIMITER //
  676. SELECT * FROM Students WHERE school_name = 'saintfatima' and '66 Ismail Al Kabbani' and accepted is null;
  677. UPDATE Students set accepted = 1 where ssn = 1222;
  678. DELIMITER //
  679. # drop PROCEDURE Verify_Student;
  680. # verify or assign a user name or password to non verified students
  681. CREATE PROCEDURE Verify_Student( sID INT, user VARCHAR(50), pass VARCHAR(50))
  682. BEGIN
  683.  
  684. UPDATE Students S
  685. SET S.user_name = user, S.password = pass
  686. WHERE S.ssn = sID;
  687.  
  688. END //
  689. DELIMITER ;
  690. use test3;
  691. SELECT *
  692. FROM Employees;
  693. SELECT *
  694. FROM Adminstrators;
  695.  
  696. -- 3
  697. #Add other admins to the school I am working in. An admin has first name, middle name, last name,
  698. # birthdate, address, email, username, password, and gender. Note that the salary of the admin
  699. # depends on the type of the school
  700. DELIMITER //
  701. CREATE PROCEDURE addAdmin(newusername VARCHAR(20),
  702. newusername_password VARCHAR(20),
  703. newfirst_name VARCHAR(20),
  704. newmiddle_name VARCHAR(20),
  705. newlast_name VARCHAR(20),
  706. newgender VARCHAR(1),
  707. newemail VARCHAR(50),
  708. newaddress VARCHAR(50),
  709. newbirth_date DATETIME, adminName VARCHAR(50),adminPassword VARCHAR(50),schoolType VARCHAR(50))
  710. BEGIN
  711. DECLARE schoolAddress VARCHAR(50);
  712. DECLARE schoolName VARCHAR(50);
  713. DECLARE id INT DEFAULT 0;
  714.  
  715. SELECT S.name
  716. INTO schoolName
  717. FROM Schools S INNER JOIN Employees E ON E.school_name = S.name AND E.school_address = S.address
  718. INNER JOIN Adminstrators A ON A.adminstrator_id = E.employee_ID
  719. WHERE E.username = adminName and E.username_password = adminPassword;
  720.  
  721.  
  722. SELECT S.address
  723. INTO schoolAddress
  724. FROM Schools S INNER JOIN Employees E ON E.school_name = S.name AND E.school_address = S.address
  725. INNER JOIN Adminstrators A ON A.adminstrator_id = E.employee_ID
  726. WHERE E.username = adminName and E.username_password = adminPassword;
  727.  
  728.  
  729. INSERT INTO Employees (username, username_password, first_name, middle_name, last_name, gender, email, e_address, birth_date, school_name, school_address)
  730. VALUES
  731. (newusername, newusername_password, newfirst_name, newmiddle_name, newlast_name, newgender, newemail, newaddress,
  732. newbirth_date, schoolName, schoolAddress);
  733.  
  734. SELECT E.employee_ID
  735. INTO id
  736. FROM Schools S INNER JOIN Employees E ON E.school_name = S.name AND E.school_address = S.address
  737. WHERE E.username = newusername;
  738.  
  739. INSERT INTO Adminstrators (adminstrator_id)
  740. VALUE (id);
  741.  
  742. IF (schoolType='international') then
  743. UPDATE Employees E2
  744. SET E2.salary = 5000
  745. WHERE E2.employee_ID = id;
  746. ELSE
  747. UPDATE Employees E2
  748. SET E2.salary = 3000
  749. WHERE E2.employee_ID = id;
  750. end IF ;
  751. END //
  752. DELIMITER ;
  753.  
  754.  
  755. -- 4
  756. # DROP PROCEDURE View_Employees;
  757. # View employees in the same school as the adminsystem.
  758. DELIMITER //
  759. CREATE PROCEDURE View_Employees(myName VARCHAR(50), myPass VARCHAR(50))
  760. BEGIN
  761.  
  762. DECLARE mySchoolName VARCHAR(50);
  763. DECLARE mySchoolAddress VARCHAR(50);
  764. SELECT S.name
  765. INTO mySchoolName
  766. FROM Schools S INNER JOIN Employees E ON E.school_name = S.name AND E.school_address = S.address
  767. INNER JOIN Adminstrators A ON A.adminstrator_id = E.employee_ID
  768. WHERE E.username = myName and E.username_password = myPass;
  769.  
  770. SELECT S.address
  771. INTO mySchoolAddress
  772. FROM Schools S INNER JOIN Employees E ON E.school_name = S.name AND E.school_address = S.address
  773. INNER JOIN Adminstrators A ON A.adminstrator_id = E.employee_ID
  774. WHERE E.username = myName and E.username_password = myPass;
  775.  
  776. SELECT E.*
  777. FROM Employees E
  778. WHERE E.school_name = mySchoolName AND E.school_address = mySchoolAddress;
  779. END //
  780. DELIMITER ;
  781.  
  782.  
  783.  
  784.  
  785. # Delete certain employee from the admin's system
  786. DELIMITER //
  787. CREATE PROCEDURE deleteEmployeesFromSystem(id INT)
  788. BEGIN
  789. DELETE FROM Employees
  790. WHERE employee_ID = id;
  791.  
  792.  
  793. END //
  794. DELIMITER ;
  795.  
  796.  
  797. -- 5
  798. # drop PROCEDURE updateGeneralInfo;
  799. # update admin's school general info
  800. DELIMITER //
  801. CREATE PROCEDURE updateGeneralInfo(info VARCHAR(200), myName VARCHAR(50), myPassword VARCHAR(50))
  802. BEGIN
  803. DECLARE mySchoolName VARCHAR(50);
  804. DECLARE mySchoolAddress VARCHAR(50);
  805.  
  806. SELECT S.name
  807. INTO mySchoolName
  808. FROM Schools S INNER JOIN Employees E ON E.school_name = S.name AND E.school_address = S.address
  809. INNER JOIN Adminstrators A ON a.adminstrator_id = E.employee_ID
  810. WHERE E.username = myName and E.username_password = myPassword;
  811.  
  812. SELECT S.address
  813. INTO mySchoolAddress
  814. FROM Schools S INNER JOIN Employees E ON E.school_name = S.name AND E.school_address = S.address
  815. INNER JOIN Adminstrators A ON A.adminstrator_id = employee_ID
  816. WHERE E.username = myName and E.username_password = myPassword;
  817.  
  818. UPDATE Schools S
  819. SET S.general_info = info
  820. WHERE S.name = mySchoolName AND S.address = mySchoolAddress;
  821.  
  822. END //
  823. DELIMITER ;
  824. # call updateGeneralInfo()
  825.  
  826. # update admin's school vision
  827. DELIMITER //
  828. # drop PROCEDURE updateVision;
  829. CREATE PROCEDURE updateVision(vis VARCHAR(200),myName VARCHAR(50), myPassword VARCHAR(50))
  830. BEGIN
  831. DECLARE mySchoolName VARCHAR(50);
  832. DECLARE mySchoolAddress VARCHAR(50);
  833.  
  834. SELECT S.name
  835. INTO mySchoolName
  836. FROM Schools S INNER JOIN Employees E ON E.school_name = S.name AND E.school_address = S.address
  837. INNER JOIN Adminstrators A ON a.adminstrator_id = E.employee_ID
  838. WHERE E.username = myName and E.username_password = myPassword;
  839.  
  840. SELECT S.address
  841. INTO mySchoolAddress
  842. FROM Schools S INNER JOIN Employees E ON E.school_name = S.name AND E.school_address = S.address
  843. INNER JOIN Adminstrators A ON A.adminstrator_id = employee_ID
  844. WHERE E.username = myName and E.username_password = myPassword;
  845.  
  846. UPDATE Schools S
  847. SET S.vision = vis
  848. WHERE S.name = mySchoolName AND S.address = mySchoolAddress;
  849. END //
  850. DELIMITER ;
  851.  
  852. DELIMITER //
  853. # drop PROCEDURE updateAddress;
  854. # update admin's school address
  855. CREATE PROCEDURE updateAddress(naddress VARCHAR(50),myName VARCHAR(50), myPassword VARCHAR(50))
  856. BEGIN
  857. DECLARE mySchoolName VARCHAR(50);
  858. DECLARE mySchoolAddress VARCHAR(50);
  859.  
  860. SELECT S.name
  861. INTO mySchoolName
  862. FROM Schools S INNER JOIN Employees E ON E.school_name = S.name AND E.school_address = S.address
  863. INNER JOIN Adminstrators A ON a.adminstrator_id = E.employee_ID
  864. WHERE E.username = myName and E.username_password = myPassword;
  865.  
  866. SELECT S.address
  867. INTO mySchoolAddress
  868. FROM Schools S INNER JOIN Employees E ON E.school_name = S.name AND E.school_address = S.address
  869. INNER JOIN Adminstrators A ON A.adminstrator_id = employee_ID
  870. WHERE E.username = myName and E.username_password = myPassword;
  871.  
  872. UPDATE Schools S
  873. SET S.address = naddress
  874. WHERE S.name = mySchoolName AND S.address = mySchoolAddress;
  875.  
  876. END //
  877. DELIMITER ;
  878.  
  879.  
  880.  
  881. DELIMITER //
  882. drop PROCEDURE updateMission;
  883. # update admin's school mission
  884. CREATE PROCEDURE updateMission(Mis VARCHAR(200), myName VARCHAR(50), myPassword VARCHAR(50))
  885. BEGIN
  886. DECLARE mySchoolName VARCHAR(50);
  887. DECLARE mySchoolAddress VARCHAR(50);
  888.  
  889. SELECT S.name
  890. INTO mySchoolName
  891. FROM Schools S INNER JOIN Employees E ON E.school_name = S.name AND E.school_address = S.address
  892. INNER JOIN Adminstrators A ON a.adminstrator_id = E.employee_ID
  893. WHERE E.username = myName and E.username_password = myPassword;
  894.  
  895. SELECT S.address
  896. INTO mySchoolAddress
  897. FROM Schools S INNER JOIN Employees E ON E.school_name = S.name AND E.school_address = S.address
  898. INNER JOIN Adminstrators A ON A.adminstrator_id = employee_ID
  899. WHERE E.username = myName and E.username_password = myPassword;
  900.  
  901. UPDATE Schools S
  902. SET S.mission = Mis
  903. WHERE S.name = mySchoolName AND S.address = mySchoolAddress;
  904.  
  905. END //
  906.  
  907.  
  908. DELIMITER ;
  909.  
  910.  
  911. DELIMITER //
  912. # update admin's school email
  913. CREATE PROCEDURE updateEmail(mail VARCHAR(50), myName VARCHAR(50),myPassword VARCHAR(50))
  914. BEGIN
  915. DECLARE mySchoolName VARCHAR(50);
  916. DECLARE mySchoolAddress VARCHAR(50);
  917.  
  918. SELECT S.name
  919. INTO mySchoolName
  920. FROM Schools S INNER JOIN Employees E ON E.school_name = S.name AND E.school_address = S.address
  921. INNER JOIN Adminstrators A ON a.adminstrator_id = E.employee_ID
  922. WHERE E.username = myName and E.username_password = myPassword;
  923.  
  924. SELECT S.address
  925. INTO mySchoolAddress
  926. FROM Schools S INNER JOIN Employees E ON E.school_name = S.name AND E.school_address = S.address
  927. INNER JOIN Adminstrators A ON A.adminstrator_id = employee_ID
  928. WHERE E.username = myName and E.username_password = myPassword;
  929.  
  930. UPDATE Schools S
  931. SET S.email = mail
  932. WHERE S.name = mySchoolName AND S.address = mySchoolAddress;
  933.  
  934. END //
  935. DELIMITER ;
  936.  
  937.  
  938.  
  939. # update admin's school mainLanguage
  940. DELIMITER //
  941. CREATE PROCEDURE updateMainLangauge(lang VARCHAR(50), myName VARCHAR(50) ,myPassword VARCHAR(50) )
  942. BEGIN
  943. DECLARE mySchoolName VARCHAR(50);
  944. DECLARE mySchoolAddress VARCHAR(50);
  945.  
  946. SELECT S.name
  947. INTO mySchoolName
  948. FROM Schools S INNER JOIN Employees E ON E.school_name = S.name AND E.school_address = S.address
  949. INNER JOIN Adminstrators A ON a.adminstrator_id = E.employee_ID
  950. WHERE E.username = myName and E.username_password = myPassword;
  951.  
  952. SELECT S.address
  953. INTO mySchoolAddress
  954. FROM Schools S INNER JOIN Employees E ON E.school_name = S.name AND E.school_address = S.address
  955. INNER JOIN Adminstrators A ON A.adminstrator_id = employee_ID
  956. WHERE E.username = myName and E.username_password = myPassword;
  957.  
  958. UPDATE Schools S
  959. SET S.main_language = lang
  960. WHERE S.name = mySchoolName AND S.address = mySchoolAddress;
  961.  
  962. END //
  963. # drop PROCEDURE updateMainLangauge;
  964. DELIMITER ;
  965. SELECT *
  966. FROM Schools;
  967.  
  968. # update admin's school number
  969. DELIMITER //
  970. # drop PROCEDURE updatePhoneNumber;
  971. CREATE PROCEDURE updatePhoneNumber(num INT, myName VARCHAR(50), myPassword VARCHAR(50))
  972. BEGIN
  973. DECLARE mySchoolName VARCHAR(50);
  974. DECLARE mySchoolAddress VARCHAR(50);
  975.  
  976. SELECT S.name
  977. INTO mySchoolName
  978. FROM Schools S INNER JOIN Employees E ON E.school_name = S.name AND E.school_address = S.address
  979. INNER JOIN Adminstrators A ON a.adminstrator_id = E.employee_ID
  980. WHERE E.username = myName and E.username_password = myPassword;
  981.  
  982. SELECT S.address
  983. INTO mySchoolAddress
  984. FROM Schools S INNER JOIN Employees E ON E.school_name = S.name AND E.school_address = S.address
  985. INNER JOIN Adminstrators A ON A.adminstrator_id = employee_ID
  986. WHERE E.username = myName and E.username_password = myPassword;
  987.  
  988. UPDATE Schools S
  989. SET S.phone_number = num
  990. WHERE S.name = mySchoolName AND S.address = mySchoolAddress;
  991. END //
  992.  
  993.  
  994. # 6 Post announcements with the following information: date, title, description and type (events, news,
  995. # trips ...etc) to the admin's school
  996. DELIMITER //
  997. CREATE PROCEDURE createAnnouncement(newdata DATETIME, newtitle VARCHAR(50), newdescription VARCHAR(50),
  998. newemployee_id INT, newtype VARCHAR(50))
  999. BEGIN
  1000. INSERT INTO Announcements (date, title, description, employee_id, type)
  1001. VALUES (newdata, newtitle, newdescription, newemployee_id, newtype);
  1002. END//
  1003. DELIMITER ;
  1004. SELECT *
  1005. FROM Announcements;
  1006.  
  1007.  
  1008. -- 7
  1009. # Create activities and assign every activity to a certain teacher. An activity has its own date, location
  1010. # in school, type, equipment(if any), and description of the admin's school
  1011. DELIMITER //
  1012. CREATE PROCEDURE createActivity(date DATETIME, newlocation VARCHAR(50),
  1013. newadminstrator_id INT,
  1014. newname VARCHAR(50),
  1015. newequipment VARCHAR(50),
  1016. newtype VARCHAR(50),
  1017. newdescription VARCHAR(50))
  1018. BEGIN
  1019. INSERT INTO School_Activities (activity_Date, location, adminstrator_id, name, equipment, type, description)
  1020. VALUES (date, newlocation, newadminstrator_id, newname, newequipment, newtype, newdescription);
  1021.  
  1022. END//
  1023. SELECT *
  1024. FROM School_Activities;
  1025.  
  1026.  
  1027. -- 8
  1028. -- note:also changes assigned teacher
  1029. # Change the teacher assigned to an activity . can also be used to assign a teacher to an assignment
  1030. DELIMITER //
  1031. CREATE PROCEDURE assignTeacherToActivity(date DATETIME, newlocation VARCHAR(50), newteacher_id INT, adminstrator_id INT)
  1032. BEGIN
  1033. UPDATE School_Activities S
  1034. SET S.teacher_id = newteacher_id
  1035. WHERE S.activity_Date = date AND S.location = newlocation;
  1036.  
  1037. END //
  1038. DELIMITER ;
  1039.  
  1040.  
  1041. -- 9
  1042. -- TODO: the course thingy
  1043. # Assign teachers to courses that are taught in my school based on the levels it offers
  1044. DELIMITER //
  1045. # assigns a teacher to a course
  1046. CREATE PROCEDURE Assign_Teacher_to_Course(myID int , tID INT, cc int)
  1047. BEGIN
  1048. INSERT INTO Students_taughtBy_Teachers( course_code, teacher_id)
  1049. VALUES (cc,tID);
  1050.  
  1051. END //
  1052. DELIMITER ;
  1053.  
  1054.  
  1055. SELECT *
  1056. FROM Students_taughtBy_Teachers;
  1057. -- 10
  1058. # assigns a teacher (teacher 1) to supervise another teacher( teacher 2)
  1059. DELIMITER //
  1060. -- 1 supervises 2
  1061. CREATE PROCEDURE assignTeacherToSuperViseTeacher(id1 INT, id2 INT, adminID INT)
  1062. BEGIN
  1063. INSERT INTO Teachers_supervises_Teachers (teacher_id1, teacher_id2)
  1064. VALUES (id1, id2);
  1065. END;
  1066. DELIMITER ;
  1067.  
  1068.  
  1069.  
  1070. -- 11 Accept or reject the application submitted by parents to their children. in the admin's school
  1071. # DROP PROCEDURE viewPendingStudents;
  1072. DELIMITER //
  1073. CREATE PROCEDURE viewPendingStudents(myID INT)
  1074. BEGIN
  1075. DECLARE mySchoolName VARCHAR(50);
  1076. DECLARE mySchoolAddress VARCHAR(50);
  1077.  
  1078. SELECT S.name
  1079. INTO mySchoolName
  1080. FROM Schools S INNER JOIN Employees E ON E.school_name = S.name AND E.school_address = S.address
  1081. INNER JOIN Adminstrators A ON A.adminstrator_id = E.employee_ID
  1082. WHERE E.employee_ID = myID;
  1083.  
  1084. SELECT S.address
  1085. INTO mySchoolAddress
  1086. FROM Schools S INNER JOIN Employees E ON E.school_name = S.name AND E.school_address = S.address
  1087. INNER JOIN Adminstrators A ON A.adminstrator_id = E.employee_ID
  1088. WHERE E.employee_ID = myID;
  1089.  
  1090. SELECT S.*
  1091. FROM Students S
  1092. WHERE S.school_address = mySchoolAddress AND S.school_name = mySchoolName AND S.accepted IS NULL;
  1093. END;
  1094. DELIMITER ;
  1095.  
  1096.  
  1097. DELIMITER //
  1098.  
  1099. CREATE PROCEDURE acceptOrRejectStudents(myID INT, sID INT, decission INT(1))
  1100. BEGIN
  1101. DECLARE mySchoolName VARCHAR(50);
  1102. DECLARE mySchoolAddress VARCHAR(50);
  1103.  
  1104. SELECT S.name
  1105. INTO mySchoolName
  1106. FROM Schools S INNER JOIN Employees E ON E.school_name = S.name AND E.school_address = S.address
  1107. INNER JOIN Adminstrators A ON A.adminstrator_id = E.employee_ID
  1108. WHERE E.employee_ID = myID;
  1109.  
  1110. SELECT S.address
  1111. INTO mySchoolAddress
  1112. FROM Schools S INNER JOIN Employees E ON E.school_name = S.name AND E.school_address = S.address
  1113. INNER JOIN Adminstrators A ON A.adminstrator_id = E.employee_ID
  1114. WHERE E.employee_ID = myID;
  1115.  
  1116. UPDATE Students S
  1117. SET S.accepted = decission
  1118. WHERE S.school_address = mySchoolAddress AND S.school_name = mySchoolName AND S.accepted IS NULL AND sID = S.ssn;
  1119.  
  1120. END //
  1121.  
  1122. -- 9 view the questions asked by the students for each course I teach.
  1123. DELIMITER //
  1124.  
  1125. CREATE PROCEDURE Teacher_View_Questions(myID INT)
  1126. BEGIN
  1127. DECLARE mySchoolName VARCHAR(50);
  1128. DECLARE mySchoolAddress VARCHAR(50);
  1129.  
  1130. SELECT S.name
  1131. INTO mySchoolName
  1132. FROM Schools S INNER JOIN Employees E ON E.school_name = S.name AND E.school_address = S.address
  1133. INNER JOIN Teachers T ON T.teacher_id = E.employee_ID
  1134. WHERE E.employee_ID = myID;
  1135.  
  1136. SELECT S.address
  1137. INTO mySchoolAddress
  1138. FROM Schools S INNER JOIN Employees E ON E.school_name = S.name AND E.school_address = S.address
  1139. INNER JOIN Teachers T ON T.teacher_id = E.employee_ID
  1140. WHERE E.employee_ID = myID;
  1141.  
  1142. SELECT Q.*
  1143. FROM Questions Q INNER JOIN Courses C ON Q.course_code = C.course_code
  1144. INNER JOIN Students S ON S.ssn = Q.ssn
  1145. INNER JOIN Students_taughtBy_Teachers stt ON stt.ssn = S.ssn AND stt.course_code = C.course_code
  1146. WHERE stt.teacher_id = myID;
  1147. END //
  1148. DELIMITER ;
  1149.  
  1150. #Answer the questions asked by the students for each course I teach.
  1151. -- 9
  1152. DELIMITER //
  1153. CREATE PROCEDURE Teacher_Answers_Questions(myID INT, qnum INT, cont VARCHAR(500))
  1154. BEGIN
  1155. INSERT INTO Answers (teacher_id, question_number, content)
  1156. VALUES (myID, qnum, cont);
  1157. END //
  1158. DELIMITER ;
  1159.  
  1160.  
  1161.  
  1162. -- TODO: test above proc
  1163. -- 10
  1164. -- TODO:verify 10
  1165. # View a list of students that i teach categorized by the grade and ordered by their name (first name
  1166. # and last name).
  1167.  
  1168. DELIMITER //
  1169. CREATE PROCEDURE View_Students(myID INT)
  1170. BEGIN
  1171. SELECT
  1172. S.name,
  1173. g.student_grade
  1174. FROM Students_taughtBy_Teachers stt INNER JOIN Students S ON stt.ssn = S.ssn
  1175. INNER JOIN grade g ON g.teacher_id = stt.teacher_id
  1176. WHERE stt.teacher_id = myID
  1177. ORDER BY S.name;
  1178. END //
  1179. DELIMITER ;
  1180.  
  1181.  
  1182. # View a list of students that did not join any activity.
  1183. DELIMITER //
  1184. CREATE PROCEDURE Students_Without_Activity(myId INT)
  1185. BEGIN
  1186. DECLARE mySchoolName VARCHAR(50);
  1187. DECLARE mySchoolAddress VARCHAR(50);
  1188.  
  1189. SELECT S.name
  1190. INTO mySchoolName
  1191. FROM Schools S INNER JOIN Employees E ON E.school_name = S.name AND E.school_address = S.address
  1192. WHERE E.employee_ID = myID;
  1193.  
  1194. SELECT S.address
  1195. INTO mySchoolAddress
  1196. FROM Schools S INNER JOIN Employees E ON E.school_name = S.name AND E.school_address = S.address
  1197. WHERE E.employee_ID = myID;
  1198.  
  1199.  
  1200. SELECT S.*
  1201. FROM Students S, Activities_Involve_Students ais
  1202. WHERE S.school_name = mySchoolName AND S.school_address = mySchoolAddress AND S.ssn NOT IN (SELECT ais.student_ssn
  1203. FROM
  1204. Activities_Involve_Students ais);
  1205.  
  1206.  
  1207. END //
  1208. DELIMITER ;
  1209.  
  1210. # return the average rating of the teacher
  1211. DELIMITER //
  1212. CREATE PROCEDURE Rate_Teacher_Avg(OUT res FLOAT, myId INT)
  1213. BEGIN
  1214. DECLARE total FLOAT;
  1215. DECLARE cnt FLOAT;
  1216.  
  1217. SELECT count(prt.rating)
  1218. INTO cnt
  1219. FROM Teachers T INNER JOIN Parents_rateAndreview_Teachers prt ON prt.teacher_id = T.teacher_id
  1220. WHERE T.teacher_id = myId;
  1221.  
  1222. SELECT sum(prt.rating)
  1223. INTO total
  1224. FROM Teachers T INNER JOIN Parents_rateAndreview_Teachers prt ON prt.teacher_id = T.teacher_id
  1225. WHERE T.teacher_id = myId;
  1226.  
  1227. SET res = total / cnt;
  1228.  
  1229. END;
  1230. DELIMITER ;
  1231. -- youmna
  1232. -- 1
  1233. -- used to create a new school
  1234. CREATE PROCEDURE Create_school(
  1235. school_name VARCHAR(50),
  1236. address VARCHAR(50),
  1237. general_info VARCHAR(50),
  1238. vision VARCHAR(50),
  1239. mission VARCHAR(50),
  1240. email VARCHAR(50),
  1241. main_language VARCHAR(50),
  1242. phone_number VARCHAR(50)
  1243. )
  1244. BEGIN
  1245. INSERT INTO Schools
  1246. VALUES (school_name, address, general_info, vision, mission, email, main_language, phone_number);
  1247. END;
  1248. DELIMITER ;
  1249.  
  1250. -- CALL Create_school('Rowad2','NasrCity','schoolInfo','ourVision','ourMission','Rowad@yahoo.com','English','0123456789');
  1251.  
  1252. -- 2
  1253. -- used to add courses
  1254. CREATE PROCEDURE ADD_Course(
  1255.  
  1256. course_code INTEGER,
  1257. course_name VARCHAR(50),
  1258. description VARCHAR(50),
  1259. course_level VARCHAR(50),
  1260. grade INTEGER
  1261. )
  1262. BEGIN
  1263. INSERT INTO Courses (course_code, name, description)
  1264. VALUES (course_code, course_name, description);
  1265. INSERT INTO Courses_offer_Levels VALUES (grade, course_code, level);
  1266. INSERT INTO courses_has_prerequisite_courses VALUES (course_code1, course_code2);
  1267. END;
  1268. DELIMITER ;
  1269.  
  1270. # CALL ADD_Course(10,'Math3','Mathematics course for high school students', 'High',12);
  1271. # CALL ADD_Course(11,'Math3','Mathematics course for high school students', 'High',12);
  1272.  
  1273.  
  1274. -- used to add prequiisite courses to other courses
  1275. CREATE PROCEDURE ADD_prreRequisites(course_code1 INTEGER, course_code2 INTEGER)
  1276. BEGIN
  1277. INSERT INTO Courses_has_prerequisite_Courses (course_code1, course_code2) VALUES (course_code1, course_code2);
  1278. END;
  1279.  
  1280. DELIMITER ;
  1281.  
  1282.  
  1283. # CALL Add_Admins('Reem', 'Adel', 'Aboushawareb', 'F', '1996-5-18', 'tagamooo', 'Reem@yahoo.com', 'Reem.AbouShwareb',
  1284. # 'balabizo', 'stFatima', 'international');
  1285.  
  1286. -- 4
  1287. -- used to delete schools
  1288. CREATE PROCEDURE Delete_school(school_name VARCHAR(50))
  1289. BEGIN
  1290. DELETE FROM Schools
  1291. WHERE name = school_name;
  1292.  
  1293. END;
  1294.  
  1295. -- As a parent
  1296.  
  1297. -- 1
  1298. -- used by parents to sign up on the site
  1299. CREATE PROCEDURE Sign_Up(f_name VARCHAR(50), l_name VARCHAR(50), email VARCHAR(50), address VARCHAR(50),
  1300. home_phone_number VARCHAR(50), parent_user_name VARCHAR(50), parent_password VARCHAR(50))
  1301. BEGIN
  1302.  
  1303. INSERT INTO Parents (user_name, password, first_name, last_name, home_phone, email) VALUES
  1304. (parent_user_name, parent_password, f_name, l_name, home_phone_number, email);
  1305.  
  1306. END;
  1307. CALL Sign_Up('hady','mohamed','hadyyasser','wara','011148','hadyz1100','keytroni');
  1308. CREATE PROCEDURE parents_mobileNumbers(mobileNumber VARCHAR(50))
  1309. BEGIN
  1310. INSERT INTO Parents (home_phone) VALUES (mobileNumber);
  1311.  
  1312. END;
  1313. DELIMITER ;
  1314.  
  1315. -- 2
  1316. -- used by parent to apply for their child in a school
  1317. CREATE PROCEDURE Apply_for_child(school_name VARCHAR(50), ssn INTEGER, name VARCHAR(50), birth_date DATETIME,
  1318. gender VARCHAR(1),parent_user_name VARCHAR(50))
  1319. BEGIN
  1320. INSERT INTO Students (ssn, user_name, gender, name, birth_date)
  1321. VALUES (ssn, name, gender,name, birth_date);
  1322.  
  1323.  
  1324. INSERT INTO Parents_apply_Students_Schools ( parent_user_name, student_ssn, school_name) VALUES (parent_user_name,ssn ,school_name);
  1325.  
  1326. END;
  1327.  
  1328. # INSERT INTO Parents (user_name, password, first_name, last_name, home_phone, email, address)
  1329. # VALUES ('Mahmoud.Abdelaziz','balabizo','Mahmoud','Abdelaziz','0232424244','Mahmoud@gmail.com','NasrCity');
  1330.  
  1331. # CALL Apply_for_child('Elmasrya',7,'Laila','2001-2-3','F','Mahmoud.Abdelaziz');
  1332.  
  1333. -- 3
  1334.  
  1335.  
  1336. # CALL listOfSchools_Accepted(3);
  1337.  
  1338. -- 4
  1339.  
  1340.  
  1341. -- views list of schools in which student is accepted
  1342. CREATE PROCEDURE listOfSchools_Accepted(IN student_ssn INTEGER)
  1343. BEGIN
  1344.  
  1345. SELECT p.school_name
  1346. FROM Parents_apply_Students_Schools p
  1347. WHERE p.accept = 1 AND p.student_ssn = student_ssn
  1348. GROUP BY p.student_ssn;
  1349.  
  1350. END;
  1351. DELIMITER ;
  1352.  
  1353.  
  1354.  
  1355. # CALL listOfSchools_Accepted(3);
  1356.  
  1357. -- 5
  1358. -- used by parent to enroll their student in a shcool
  1359. CREATE PROCEDURE enroll_MyStudent(student_ssn INTEGER, school_name VARCHAR(50), school_address VARCHAR(50))
  1360. BEGIN
  1361. INSERT INTO Students_Enrolled_Schools (ssn, school_name, school_address) VALUES
  1362. (student_ssn, school_name, school_address);
  1363.  
  1364. END;
  1365. DELIMITER ;
  1366. # DROP PROCEDURE listOfReports;
  1367. -- views
  1368. CREATE PROCEDURE listOfReports(parent_user_name VARCHAR(50))
  1369. BEGIN
  1370. SELECT content
  1371. FROM Reports WHERE user_name =parent_user_name
  1372. GROUP BY student_ssn;
  1373. END;
  1374. DELIMITER ;
  1375.  
  1376. -- INSERT INTO Reports( comment, content, issue_date, user_name, student_ssn, teacher_id,report_number)
  1377. -- VALUES ('you are Good','Wohooo','2016-11-23','Nader.Elghandoor',2,3,1);
  1378.  
  1379. # CALL listOfReports('Nader.Elghandoor');
  1380.  
  1381. -- 6
  1382. -- used to reply to reports
  1383. CREATE PROCEDURE ReplyToReports(content VARCHAR(50), user_name VARCHAR(50), teacher_id INTEGER)
  1384. BEGIN
  1385.  
  1386. INSERT INTO Parents_reply_Reports VALUES (content, user_name, teacher_id);
  1387. END;
  1388. DELIMITER ;
  1389.  
  1390. -- 7
  1391. -- used by parents to view their children school list
  1392. CREATE PROCEDURE MyChildrenSchoolList(parent_user_name VARCHAR(50))
  1393. BEGIN
  1394. SELECT p.school_name
  1395. FROM students s INNER JOIN Parents_apply_Students_Schools p ON parent_user_name = p.parent_user_name
  1396. GROUP BY p.school_name;
  1397. END;
  1398. DELIMITER ;
  1399. # CALL MyChildrenSchoolList('Nader.elghandoor');
  1400. SELECT *
  1401. FROM Parents;
  1402. -- 8
  1403. -- views announcements made int he past 10 days
  1404. CREATE PROCEDURE Announcements_inPastDays(student_ssn INTEGER)
  1405.  
  1406. BEGIN
  1407. DECLARE x_interval INT DEFAULT 0;
  1408. set x_interval =(CURDATE()-INTERVAL 10 DAY );
  1409. SELECT x_interval ;
  1410. SELECT A.description
  1411. FROM Announcements A
  1412. WHERE A.date >= DATE(NOW()) - INTERVAL 10 DAY AND
  1413. exists( SELECT s.ssn
  1414. FROM Students_Enrolled_Schools s
  1415. WHERE s.ssn =student_ssn);
  1416. END;
  1417. DELIMITER ;
  1418.  
  1419.  
  1420. # INSERT INTO Announcements (date, title, description, employee_id)
  1421. # VALUES ('2016-11-22','MileStone PostPoned :) ','you all got the full mark',2);
  1422.  
  1423. # CALL Announcements_inPastDays;
  1424.  
  1425.  
  1426. -- 9
  1427. -- used by parent to rate their student's teacher
  1428. CREATE PROCEDURE Rate_MyChildren_Teachers2(rate INTEGER, t_id INTEGER, parent_user_name VARCHAR(50))
  1429. BEGIN
  1430. INSERT INTO Parents_rateAndreview_Teachers (rate, teacher_id, parent) VALUES (rate, t_id, parent_user_name);
  1431. END;
  1432. DELIMITER ;
  1433.  
  1434. -- views parent children in schools
  1435. CREATE PROCEDURE getMychild_ssn(IN parent_user_name VARCHAR(50), OUT student_ssn INTEGER)
  1436. BEGIN
  1437. SELECT s.ssn
  1438. FROM Parents
  1439. INNER JOIN Students s ON parent_user_name = s.user_name
  1440. INTO student_ssn;
  1441. END;
  1442. DELIMITER ;
  1443.  
  1444. -- 11
  1445. -- deletes parent review
  1446. CREATE PROCEDURE DeleteReview(parent_user_name VARCHAR(50), parent_rate_number INTEGER)
  1447. BEGIN
  1448.  
  1449. DELETE FROM Parents_rateAndreview_Schools
  1450. WHERE parent_username = parent_user_name AND
  1451. rate = parent_rate_number;
  1452. END;
  1453. DELIMITER ;
  1454.  
  1455. # CALL DELETEReview('Nader.elghandoor', 1);
  1456.  
  1457.  
  1458. # CALL topSchools();
  1459.  
  1460. -- 14
  1461. -- views inernational school with highest reputation
  1462. CREATE PROCEDURE InternationalSchool_highestReputation()
  1463. BEGIN
  1464. DECLARE international INT DEFAULT 0;
  1465. DECLARE national INT DEFAULT 0;
  1466. SELECT count(review)
  1467. FROM Parents_rateAndreview_Schools s INNER JOIN Types t
  1468. ON s.school_name = t.school_name AND t.type = 'national'
  1469. INTO national;
  1470.  
  1471. SELECT count(review)
  1472. FROM Parents_rateAndreview_Schools s INNER JOIN Types t
  1473. ON s.school_name = t.school_name AND t.type = 'internationl'
  1474. INTO international;
  1475.  
  1476. IF (national > international)
  1477. THEN
  1478. SELECT s.name
  1479. FROM Schools s INNER JOIN Types t
  1480. ON s.name = t.school_name AND t.type = 'national';
  1481. ELSE SELECT s.name
  1482. FROM Schools s INNER JOIN Types t
  1483. ON s.name = t.school_name AND t.type = 'international';
  1484. END IF;
  1485. END;
  1486. DELIMITER ;
  1487.  
  1488. # CALL InternationalSchool_highestReputation();
  1489.  
  1490.  
  1491. -- helper procedures and View Procedures
  1492. CREATE PROCEDURE view_students_I_Teach(teacher_id INTEGER)
  1493. BEGIN
  1494. SELECT t.ssn
  1495. FROM Students_taughtBy_Teachers t
  1496. WHERE t.teacher_id = teacher_id;
  1497.  
  1498. END;
  1499. DELIMITER ;
  1500.  
  1501. # CALL view_students_I_Teach(3);
  1502.  
  1503. -- reem
  1504. -- used by students to update their data
  1505. create PROCEDURE student_update_his_data
  1506. (student_ssn int ,gender varchar(50),
  1507. student_name varchar(50),
  1508. birth_date datetime,
  1509. password varchar(50),
  1510. sch_name VARCHAR(50),
  1511. sch_address VARCHAR(50))
  1512. BEGIN
  1513.  
  1514. Update Students SET Students.gender=gender,
  1515. Students.name=student_name,
  1516. Students.birth_date=birth_date,
  1517. Students.password=password,
  1518. Students.school_address=sch_address,
  1519. Students.school_name=sch_name
  1520.  
  1521. where Students.ssn = student_ssn;
  1522. END;
  1523. -- used by students to view courses
  1524. create procedure student_view_courses(user VARCHAR(50),pass VARCHAR(50))
  1525. begin
  1526. select distinct c.name
  1527. from Courses c inner join Courses_offer_Levels col
  1528. on c.course_code=col.course_code
  1529. where col.grade= (
  1530. select s.grade
  1531. from Students s
  1532. where s.user_name=user and s.password=pass and s.school_address=c.school_address and s.school_name=c.school_name
  1533. );
  1534. END;
  1535. -- use dby students to post questions
  1536. CREATE PROCEDURE student_post_question(user varchar(50),pass varchar(50),question VARCHAR(50)
  1537. ,courseCode int)
  1538. begin
  1539. declare student_ssn int;
  1540. declare x int;
  1541.  
  1542. select s.ssn into student_ssn
  1543. from Students s
  1544. where s.user_name=user and s.password=pass ;
  1545.  
  1546. INSERT into Questions (course_code,ssn,content)
  1547. values(courseCode,student_ssn,question);
  1548. END;
  1549. -- views all questions
  1550. create procedure view_all_questions(user VARCHAR(50),pass varchar(50),courseCode VARCHAR(50))
  1551. BEGIN
  1552. declare z VARCHAR(50);
  1553. declare y VARCHAR(50);
  1554. select s.school_address into y
  1555. from Students s
  1556. where s.user_name=user and s.password=pass;
  1557.  
  1558. select s.school_name into z
  1559. from Students s
  1560. where s.user_name=user and s.password=pass;
  1561.  
  1562. select q.content
  1563. from Questions q inner join Courses c
  1564. on q.course_code=c.course_code
  1565. where c.school_name=z and c.school_address=y and c.course_code=courseCode;
  1566.  
  1567. END;
  1568. -- used by students to post assignment solution
  1569. CREATE PROCEDURE student_solve_assignment( user varchar(50),pass varchar(50),solution varchar(50),assignmentNumber int)
  1570. BEGIN
  1571. declare x int;
  1572. select s.ssn into x
  1573. from Students s
  1574. where s.user_name=user and s.password= pass;
  1575. insert into Assignments_solve_Students (solution, student_ssn, assignment_number)
  1576. values(solution,x,assignmentNumber);
  1577.  
  1578. END;
  1579. -- used by student to view grade
  1580. CREATE PROCEDURE student_view_grade(user varchar(50),pass varchar(50),assignment_number int,courseCode int)
  1581. BEGIN
  1582. declare ssn_student int;
  1583. select s.ssn into ssn_student
  1584. from Students s
  1585. where s.user_name=user and s.password=pass;
  1586.  
  1587. select a.grade
  1588. from Assignments_solve_Students a inner join Assignments_posteBy_Teachers ass
  1589. on ass.assignment_number=a.assignment_number
  1590. where a.student_ssn= ssn_student and ass.course_code-courseCode;
  1591.  
  1592. end;
  1593. -- used by students to view announcements
  1594. create PROCEDURE student_view_announcement(user VARCHAR(50),pass int)
  1595. BEGIN
  1596. declare x VARCHAR(50);
  1597. declare y VARCHAR(50);
  1598. select s.school_name into x
  1599. from Students s
  1600. where s.user_name=user and s.password=pass;
  1601. select s.school_address into y
  1602. from Students s
  1603. where s.user_name=user and s.password=pass;
  1604. select a.*
  1605. from Announcements a inner join Employees e
  1606. on a.employee_id=e.employee_ID
  1607. where a.date >=(a.date -10) and e.school_name=x and e.school_address=y;
  1608. END;
  1609. DROP PROCEDURE view_announcement;
  1610. create PROCEDURE view_announcement(x VARCHAR(50),y VARCHAR(50))
  1611. BEGIN
  1612. select a.*
  1613. from Announcements a inner join Employees e
  1614. on a.employee_id=e.employee_ID
  1615. where a.date >=(a.date -10) and e.school_name=x and e.school_address=y;
  1616. END;
  1617. CALL view_announcement('saintfatima','66 Ismail Al Kabbani');
  1618. SELECT *
  1619. FROM Employees;
  1620. -- used by student to view activity
  1621. create procedure student_view_activities(user VARCHAR(50),pass VARCHAR(50) )
  1622. begin
  1623. declare x VARCHAR(50);
  1624. declare y varchar(50);
  1625. select s.school_name into x
  1626. from Students s
  1627. where s.user_name=user and s.password=pass;
  1628. select s.school_address into y
  1629. from Students s
  1630. where s.user_name=user and s.password=pass;
  1631.  
  1632. select a.activity_Date,a.location,a.description,a.equipment,a.name,a.type,e1.first_name,e1.middle_name,e1.last_name,t.experience_year,t.seniority_level
  1633. from School_Activities a inner join Employees e1
  1634. on e1.employee_ID=a.teacher_id
  1635. inner join Employees e2
  1636. on e2.employee_ID=a.adminstrator_id
  1637. inner join Teachers t
  1638. on t.teacher_id=e1.employee_ID
  1639. where e1.school_address=y and e1.school_name=x and e2.school_address=y and e2.school_name=x;
  1640. END;
  1641.  
  1642. -- used to apply for activity
  1643. create procedure students_applyForActivites(user varchar(50),pass VARCHAR(50),date DATETIME,activity_location VARCHAR(50))
  1644. begin
  1645. declare x int ;
  1646. declare Y VARCHAR(50);
  1647. select s.ssn into x
  1648. from Students s
  1649. where s.user_name=user and s.password=pass;
  1650. select s.type into y
  1651. from School_Activities s
  1652. where s.activity_Date=date and s.location=activity_location;
  1653. if x not IN (
  1654. select sa.student_ssn
  1655. from Activities_Involve_Students sa inner join School_Activities s
  1656. on s.activity_Date=sa.activity_Date and s.location=sa.location
  1657. where sa.activity_Date=date and s.type=y)
  1658. THEN
  1659. insert into Activities_Involve_Students values (x,date,activity_location);
  1660.  
  1661. else select
  1662. 'You Can`t apply for this activity Please choose Another one or this one in another time';
  1663. END IF;
  1664.  
  1665. END;
  1666. -- used by students to view assignments
  1667. CREATE PROCEDURE student_view_assignments(user VARCHAR(50),pass VARCHAR(50))
  1668. begin
  1669. declare x int;
  1670. declare y varchar(50);
  1671. declare z VARCHAR(50);
  1672. select s.grade into x
  1673. From Students s
  1674. where s.user_name=user and s.password=pass;
  1675.  
  1676. select s.school_address into y
  1677. from Students s
  1678. where s.user_name=user and s.password=pass;
  1679.  
  1680. select s.school_name into z
  1681. from Students s
  1682. where s.user_name=user and s.password=pass;
  1683.  
  1684. select a.*
  1685. from Assignments_posteBy_Teachers t inner join Courses_offer_Levels c
  1686. on t.course_code=c.course_code
  1687. inner join Assignments a
  1688. on a.assignment_number=t.assignment_number
  1689. inner join Employees e
  1690. on e.employee_ID=t.teacher_id
  1691. WHERE e.school_address=y and e.school_name=z and c.grade=x;
  1692. END;
  1693.  
  1694.  
  1695. -- used to make student join a club
  1696. CREATE PROCEDURE student_join_clubs (user varchar(50),pass varchar(50),clubName VARCHAR(50))
  1697. BEGIN
  1698. declare student_grade int;
  1699. declare student_ssn int;
  1700. declare x VARCHAR(50);
  1701. DECLARE y VARCHAR(50);
  1702. DECLARE z VARCHAR(50);
  1703. select s.school_name into x
  1704. from Students s
  1705. where s.user_name=user and s.password=pass;
  1706.  
  1707. select s.school_address into y
  1708. from Students s
  1709. where s.user_name=user and s.password=pass;
  1710.  
  1711. select s.grade into student_grade
  1712. from Students s
  1713. where s.user_name=user and s.password=pass;
  1714.  
  1715.  
  1716. select c.club_name into z
  1717. from Clubs c
  1718. where c.school_address=y and c.school_name=x and c.club_name=clubName;
  1719. if(student_grade >=10 and z is not null)
  1720. then
  1721. select s.ssn into student_ssn
  1722. from Students s
  1723. where s.user_name=user and s.password=pass;
  1724.  
  1725. insert into Clubs_joinBy_Students(club_name,ssn)
  1726. values(clubName,student_ssn);
  1727. ELSE
  1728. select 'Sorry You can`t join that club';
  1729. END IF;
  1730.  
  1731. end;
  1732.  
  1733.  
  1734.  
  1735. -- lets student seachf or course
  1736. create PROCEDURE student_searchFor_courses(user VARCHAR(50),pass VARCHAR(50),course_name VARCHAR(50),code int)
  1737. BEGIN
  1738. if (course_name is not null)
  1739. then
  1740.  
  1741. select c.description,c.course_code,c.name
  1742. from Courses_offer_Levels cl inner join Students s
  1743. on s.grade =cl.grade
  1744. inner join Courses c
  1745. on c.school_name=s.school_name and c.school_address=s.school_address and c.course_code=cl.course_code
  1746. where c.name= course_name and s.user_name=user and s.password=pass ;
  1747.  
  1748.  
  1749. elseif (code is not null)
  1750. then
  1751.  
  1752. select c.name,c.description,c.course_code
  1753. from Students s inner join Courses_offer_Levels cl
  1754. on cl.grade=s.grade
  1755. inner join Courses c
  1756. on c.school_address=s.school_address and c.school_name=s.school_name and c.course_code=cl.course_code
  1757. where c.course_code= code and s.user_name=user and s.password=pass ;
  1758. else SELECT 'You should enter course name or code';
  1759. END IF;
  1760. END;
  1761. -- used by teacher to sign up in school
  1762. create procedure teacher_sign_up ( fname varchar(50) , mname varchar(50) , lname varchar(50), gend varchar(1) , birth_date datetime
  1763. , mail varchar(50) , address varchar(50) , seniority int , first_year_of_work DATETIME )
  1764. BEGIN
  1765. # teacher_id , seniority_level , first_year_of_work
  1766. DECLARE x int;
  1767. insert into Employees (first_name,middle_name,last_name,email,gender,e_address,birth_date) values(fname,mname,lname, mail ,gend
  1768. , address,birth_date );
  1769. SELECT count(employee_ID) into x
  1770. FROM Employees;
  1771.  
  1772.  
  1773. INSERT into teachers ( teacher_id ,seniority_level, first_year_of_work ) VALUES (x , seniority , first_year_of_work );
  1774. END;
  1775.  
  1776. ###
  1777. # INSERT INTO Schools (name, address, general_info, vision, mission, email, main_language, phone_number) VALUES ('name', 'address', 'general_info' , 'vision', 'mission', 'email', 'main_language'
  1778. # , 'phone_number');
  1779. # INSERT INTO Employees ( username , username_password , first_name , middle_name , last_name , gender , salary , email , e_address , birth_date ,
  1780. # school_name , school_address) values ('mar' , 'bal' , 'mariem' , 'adel' , 'abou' , 'f' , 4500 , 'fjdk' , 'fdsjk' , '1989-12-12' , 'name' , 'address' );
  1781. # CALL teacher_sign_up( 'mariem' , 'adel' , 'aboushawareb' , 'f' , '1198-02-02' , 'fdsfds' , 'fdsf' , 5 , '1998-02-05' );
  1782.  
  1783. # drop table employees;
  1784. # drop table teachers;
  1785. ##ended testing
  1786.  
  1787. #
  1788. # SELECT *
  1789. # FROM Courses;
  1790. # drop PROCEDURE teachers_views_courses_taught_by_him;
  1791. # call teachers_views_courses_taught_by_him('mar1' , 'bal1' );
  1792. # SELECT *
  1793. # from Courses;
  1794. # SELECT *
  1795. # FROM Courses_offer_Levels;
  1796. # testing
  1797.  
  1798. -- used by teacher to view the courses he teaches
  1799. DELIMITER //
  1800. create procedure teachers_views_courses_taught_by_him (teacherUserName VARCHAR(50) , password varchar(50) )
  1801.  
  1802. BEGIN
  1803.  
  1804. declare t_ID INT;
  1805. SELECT employee_ID into t_ID
  1806. from Employees
  1807. WHERE Employees.username = teacherUserName AND Employees.username_password = password;
  1808. SELECT DISTINCT Courses.course_code, name , grade , level
  1809. from Courses
  1810. INNER JOIN Students_taughtBy_Teachers ON Courses.course_code = Students_taughtBy_Teachers.course_code AND
  1811. Students_taughtBy_Teachers.teacher_id = t_ID
  1812. INNER JOIN Courses_offer_Levels ON Courses.course_code = Courses_offer_Levels.course_code
  1813. ORDER BY Courses_offer_Levels.grade;
  1814. END;
  1815.  
  1816. DELIMITER //
  1817.  
  1818.  
  1819. ##testing
  1820. # INSERT INTO Schools (name, address, general_info, vision, mission, email, main_language, phone_number) VALUES ('name1', 'address1', 'general_info' , 'vision', 'mission', 'email', 'main_language'
  1821. # , 'phone_number');
  1822. # INSERT INTO Schools (name, address, general_info, vision, mission, email, main_language, phone_number) VALUES ('name2', 'address2', 'general_info' , 'vision', 'mission', 'email', 'main_language'
  1823. # , 'phone_number');
  1824. # INSERT INTO Employees ( username , username_password , first_name , middle_name , last_name , gender , salary , email , e_address , birth_date ,
  1825. # school_name , school_address) values ('mar1' , 'bal1' , 'mariem1' , 'adel1' , 'abou1' , 'f' , 45001 , 'fjdk1' , 'fdsjk1' , '1989-12-10' , 'name1' , 'address1' );
  1826.  
  1827. # INSERT INTO Teachers (seniority_level, first_year_of_work, teacher_id) VALUES ( 5 , '1888-12-12' , 2 );
  1828. # INSERT INTO Courses (course_code, name, description, school_address,schoole_name)
  1829. # VALUES (101 , 'course name' , 'description' , 'school address',
  1830. # 'school name');
  1831. # INSERT INTO Courses (course_code, name, description, school_address,schoole_name)
  1832. # VALUES (303 , 'course name' , 'description' , 'school address',
  1833. # 'school name');
  1834. # INSERT INTO Courses (course_code, name, description, school_address,schoole_name)
  1835. # VALUES (404 , 'course name' , 'description' , 'school address',
  1836. # 'school name');
  1837. # INSERT INTO Courses (course_code, name, description, school_address,schoole_name)
  1838. # VALUES (505 , 'course name' , 'description' , 'school address',
  1839. # 'school name');
  1840.  
  1841.  
  1842. # INSERT INTO Courses (course_code, name, description, school_address, school_name) VALUES (202 , 'course name' , 'description' , 'school address' ,'school name');
  1843. # INSERT INTO Students_taughtBy_Teachers (course_code , teacher_id ) VALUES ( 101 , 2);
  1844. # INSERT INTO Students_taughtBy_Teachers (course_code , teacher_id ) VALUES ( 202 , 2);
  1845. # INSERT INTO Students_taughtBy_Teachers (course_code , teacher_id ) VALUES ( 303 , 2);
  1846. # INSERT INTO Students_taughtBy_Teachers (course_code , teacher_id ) VALUES ( 404 , 2);
  1847. # INSERT INTO Students_taughtBy_Teachers (course_code , teacher_id ) VALUES ( 505 , 2);
  1848. # INSERT INTO Courses_offer_Levels (grade, level, course_code) VALUES (5 , 'primary' , 101);
  1849. # INSERT INTO Courses_offer_Levels (grade, level, course_code) VALUES (5 , 'highschool' , 202);
  1850. # INSERT INTO Courses_offer_Levels (grade, level, course_code) VALUES (5 , 'highschool' , 303);
  1851. # INSERT INTO Courses_offer_Levels (grade, level, course_code) VALUES (6 , 'highschool' , 505);
  1852.  
  1853. ##testing
  1854.  
  1855. -- use dby teacher to write reports
  1856. create PROCEDURE teachers_writes_reports (user VARCHAR(50),pass VARCHAR(50),ssn int, teacher_comment VARCHAR(50),
  1857. report_content VARCHAR(50) , report_issue_date DATETIME )
  1858. BEGIN
  1859. declare x int ;
  1860. select t.employee_ID into x
  1861. from Employees t
  1862. where t.username=user and t.username_password=pass;
  1863. insert into Reports (comment, content, issue_date, student_ssn, teacher_id)
  1864. values (teacher_comment,report_content,report_issue_date,ssn,x);
  1865. END;
  1866.  
  1867.  
  1868.  
  1869. ##testing
  1870.  
  1871. #
  1872. # CALL teachers_writes_reports( 'mar1' , 'bal1' , 1, 'excellent' , 'content' , '1998-12-12' );
  1873. # CALL teachers_writes_reports( 'mar1' , 'bal1' , 2, 'excellent' , 'content' , '1998-12-12' );
  1874. # SELECT *
  1875. # FROM Reports;
  1876.  
  1877. ##testing
  1878. -- shows student who is in the most number of clubs
  1879. create PROCEDURE member_in_most_clubs (username VARCHAR(50) , password VARCHAR(50))
  1880. BEGIN
  1881. DECLARE s_name VARCHAR(50) ;
  1882. DECLARE ssn_count INTEGER;
  1883.  
  1884.  
  1885. select s.ssn,s.name,count(c.club_name)
  1886. from Students s inner join Clubs_joinBy_Students c
  1887. on s.ssn=c.ssn
  1888. GROUP BY s.ssn;
  1889.  
  1890. END;
  1891.  
  1892.  
  1893. -- 13
  1894. -- veiws top 10 most rated schools
  1895. CREATE PROCEDURE topSchools()
  1896. BEGIN
  1897. DECLARE reviews_num INT DEFAULT 0;
  1898. DECLARE students_num INT DEFAULT 0;
  1899.  
  1900. SELECT count(review)
  1901. FROM Parents_rateAndreview_Schools
  1902. INTO reviews_num;
  1903. SELECT count(ssn)
  1904. FROM Students_Enrolled_Schools
  1905. INTO students_num;
  1906. IF (students_num > reviews_num)
  1907. THEN
  1908. SELECT school_name
  1909. FROM Students_Enrolled_Schools
  1910. ORDER BY students_num DESC LIMIT 10;
  1911. ELSE
  1912.  
  1913. SELECT pr.school_name
  1914. FROM Parents_rateAndreview_Schools pr
  1915. WHERE pr.school_name NOT IN (
  1916. SELECT s.school_name
  1917. FROM Parents p INNER JOIN Students s
  1918. ON p.user_name = s.user_name
  1919. INNER JOIN
  1920. Students_Enrolled_Schools st ON st.ssn = s.ssn AND
  1921. st.school_name = s.school_name
  1922. LIMIT 10
  1923.  
  1924. );
  1925.  
  1926. END IF;
  1927. END;
  1928. DELIMITER ;
  1929.  
  1930.  
  1931. -- starte of insertions
  1932.  
  1933.  
  1934. #Schools
  1935. insert into Schools values('saintfatima','66 Ismail Al Kabbani',
  1936. 'avaliable at the coordinator','A vibrant community striving for excellence.
  1937. ','To develop inquiring, knowledgeable',
  1938. 'saintfatima@hotmail.com','english','0123456789');
  1939. insert into Schools values('El rowad','8 Mostafa El Nahhas',
  1940. 'avaliable at the coordinator','A vibrant community striving for excellence.
  1941. ','To develop inquiring, knowledgeable',
  1942. 'info@elrowadcollege.net','english','0224723271');
  1943.  
  1944. #Employees
  1945. insert into Employees (username, username_password, first_name, middle_name, last_name, gender, email, e_address, birth_date, school_name, school_address)
  1946. VALUES ('mariem.shwareb','blabizo','mariem','mohamed','shwareb','f','mariem_adel@gmail.com','18 slah salem amarat AlAbor',
  1947. '1980-10-30 23:59:59','saintfatima','66 Ismail Al Kabbani');
  1948.  
  1949. INSERT INTO Employees(first_name, middle_name, last_name, gender, birth_date, e_address, email, username, username_password, school_name, school_address)
  1950. VALUES('Farah','Emad','Ahmed','F','1968-10-30 23:59:59','NasrCity','Farah@gmail.com','Farah.Ahmed','balabizo','saintfatima','66 Ismail Al Kabbani');
  1951.  
  1952. insert into Employees(username, username_password, first_name, middle_name, last_name, gender, email, e_address, birth_date, school_name, school_address)
  1953. VALUES ('Youmna.Ghandor','blabizo','Youmna','Nader','ElGhandor','f','youmna.elghandour@gmail.com','22 abbassia Street',
  1954. '1970-10-30 23:59:59','saintfatima','66 Ismail Al Kabbani');
  1955.  
  1956.  
  1957. insert into Employees(username, username_password, first_name, middle_name, last_name, gender, email, e_address, birth_date, school_name, school_address)
  1958. VALUES ('abeer.elsayed','blabizo','Abeer','Mohamed','ElSayed','f','abeer_elsayed@gmail.com','22 helioblies street',
  1959. '1985-10-30 23:59:59','saintfatima','66 Ismail Al Kabbani');
  1960. insert into Employees (username, username_password, first_name, middle_name, last_name, gender, email, e_address, birth_date, school_name, school_address)
  1961. VALUES ('ahmed.shwareb','blabizo','ahmed','mohamed','shwareb','m','ahmed44@gmail.com','15 slah salem amarat AlAbor',
  1962. '1985-10-1 23:59:59','saintfatima','66 Ismail Al Kabbani');
  1963. #
  1964. # insert into Employees (username, username_password, first_name, middle_name, last_name, gender, email, e_address, birth_date, school_name, school_address)
  1965. # VALUES ('mariem.shwareb','blabizo','mariem','mohamed','shwareb','f','mariem_adel@gmail.com','18 slah salem amarat AlAbor',
  1966. # '1980-10-30 23:59:59','saintfatima','8 Mostafa El Nahhas');
  1967.  
  1968. insert into Employees (username, username_password, first_name, middle_name, last_name, gender, email, e_address, birth_date, school_name, school_address)
  1969. VALUES ('hady.mohamed','blabizo','hady','mohamed','osman','m','hady_mohamed@gmail.com','10 mahmoud Tawfik nasr city',
  1970. '1980-10-30 23:59:59','El rowad','8 Mostafa El Nahhas');
  1971.  
  1972. INSERT INTO Employees(first_name, middle_name, last_name, gender, birth_date, e_address, email, username, username_password, school_name, school_address)
  1973. VALUES('Ghada','Emad','Ahmed','F','1990-10-30 23:59:59','18 ghamra street','ghada13@gmail.com','ghada.ahmed','balabizo','El rowad','8 Mostafa El Nahhas');
  1974.  
  1975. insert into Employees(username, username_password, first_name, middle_name, last_name, gender, email, e_address, birth_date, school_name, school_address)
  1976. VALUES ('haithem.hany','blabizo','haithem','Nader','hany','m','hithem.nader@gmail.com','24 abbassia Street',
  1977. '1980-10-30 23:59:59','El rowad','8 Mostafa El Nahhas');
  1978.  
  1979. insert into Employees(username, username_password, first_name, middle_name, last_name, gender, email, e_address, birth_date, school_name, school_address)
  1980. VALUES ('saleh.hossam','blabizo','Saleh','Mohamed','Hossam','f','saleh_hossam@gmail.com','25 helioblies street',
  1981. '1985-10-30 23:59:59','El rowad','8 Mostafa El Nahhas');
  1982.  
  1983. #Students
  1984.  
  1985. insert into Students (ssn ,school_name,school_address,user_name,gender,name,birth_date,password)
  1986. values (2222,'saintfatima', '66 Ismail Al Kabbani' , 'raouf_mohamed' , 'male' , 'raouf mohamed','2001-12-31 23:59:59' , 'blabizo' );
  1987. insert into Students (ssn ,school_name,school_address,user_name,gender,name,birth_date,password)
  1988. values (1111,'saintfatima', '66 Ismail Al Kabbani' , 'reem.meky' , 'female' , 'reem meky','2001-12-31 23:59:59' , 'blabizo' );
  1989. insert into Students (ssn ,school_name,school_address,user_name,gender,name,birth_date,password)
  1990. values (1222,'saintfatima', '66 Ismail Al Kabbani' , 'raghda_mohamed' , 'female' , 'raghda eslam','2002-12-31 23:59:59' , 'blabizo' );
  1991. insert into Students (ssn ,school_name,school_address,user_name,gender,name,birth_date,password)
  1992. values (12822,'saintfatima', '66 Ismail Al Kabbani' , 'rodaina_mohamed' , 'female' , 'rodaina mohamed','2002-5-31 23:59:59' , 'blabizo' );
  1993.  
  1994.  
  1995. insert into Students (ssn ,school_name,school_address,user_name,gender,name,birth_date,password)
  1996. values (3333,'El rowad', '8 Mostafa El Nahhas ' , 'mohamed.ahmed' , 'male' , 'mohamed ahmed','2001-5-31 23:59:59' , 'blabizo' );
  1997. insert into Students (ssn ,school_name,school_address,user_name,gender,name,birth_date,password)
  1998. values (3355,'El rowad', '8 Mostafa El Nahhas ' , 'hani.seif' , 'male' , 'Hani seif eldien','2001-6-25 23:59:59' , 'blabizo' );
  1999. insert into Students (ssn ,school_name,school_address,user_name,gender,name,birth_date,password)
  2000. values (3377,'El rowad', '8 Mostafa El Nahhas ' , 'mohamed.hani' , 'male' , 'mohamed Hani','2002-4-3 23:59:59' , 'blabizo' );
  2001. insert into Students (ssn ,school_name,school_address,user_name,gender,name,birth_date,password)
  2002. values (888888,'El rowad', '8 Mostafa El Nahhas ' , null , 'd' , null,null, null );
  2003.  
  2004.  
  2005. #Clubs
  2006. insert into Clubs
  2007. values ('TCS','Teach You How To be a good Actor','66 Ismail Al Kabbani','saintfatima');
  2008. insert into Clubs
  2009. values ('IEEE','Take You To Science Life ','66 Ismail Al Kabbani','saintfatima');
  2010. insert into Clubs
  2011. values ('Bdaia','Charity','8 Mostafa El Nahhas','El rowad');
  2012.  
  2013. insert into Clubs
  2014. values ('Eco Diving','Teach You Diving','8 Mostafa El Nahhas','El rowad');
  2015.  
  2016. #Teachers
  2017. insert into Teachers(seniority_level, first_year_of_work, teacher_id)
  2018. values(3,'1970-10-30 23:59:59',1);
  2019.  
  2020. insert into Teachers(seniority_level, first_year_of_work, teacher_id)
  2021. values(2,'1990-10-30 23:59:59',2);
  2022.  
  2023. insert into Teachers(seniority_level, first_year_of_work, teacher_id)
  2024. values(3,'1970-10-30 23:59:59',5);
  2025.  
  2026. insert into Teachers(seniority_level, first_year_of_work, teacher_id)
  2027. values(3,'1970-10-30 23:59:59',7);
  2028.  
  2029.  
  2030. insert into Teachers(seniority_level, first_year_of_work, teacher_id)
  2031. values(3,'1970-10-30 23:59:59',9);
  2032.  
  2033.  
  2034. insert into Adminstrators values (3);
  2035.  
  2036. insert into Adminstrators values (4);
  2037.  
  2038. insert into Adminstrators values (7);
  2039.  
  2040. insert into Adminstrators values (8);
  2041.  
  2042.  
  2043.  
  2044. #Parents
  2045. insert into Parents(user_name, password, first_name, last_name, home_phone, email, address)
  2046. values('mohamed_adel','blabizo','mohamed','adel',022750654,'mohamed_adel@hotmail.com','10 elmarghani street nasr city');
  2047. insert into Parents(user_name, password, first_name, last_name, home_phone, email, address)
  2048. values('meky_mohamed','blabizo','meky','mohamed',0227861654,'meky15@hotmail.com','25 mahmoud tawfik');
  2049. insert into Parents(user_name, password, first_name, last_name, home_phone, email, address)
  2050. values('mohamed_eslam','blabizo','mohamed','eslam',022852654,'mohamed_eslam@hotmail.com','16 abo bakr street abbasia');
  2051. insert into Parents(user_name, password, first_name, last_name, home_phone, email, address)
  2052. VALUES ('mohamed_ibrahim','blabizo','mohamed','ibrahim',0222654789,'mohamed52@yahoo.com','17 mohamed ali street masr algdeda');
  2053.  
  2054. insert into Parents(user_name, password, first_name, last_name, home_phone, email, address)
  2055. values('ahmed_abdelrahman','blabizo','ahmed','abdelrahman',022750654,'ahmed_abdelrahman@hotmail.com','20 elmarghani street nasr city');
  2056. insert into Parents(user_name, password, first_name, last_name, home_phone, email, address)
  2057. values('seif_eldin','blabizo','seif','eldin',0227861654,'seif14@hotmail.com','29 mahmoud tawfik');
  2058. insert into Parents(user_name, password, first_name, last_name, home_phone, email, address)
  2059. values('hani_mohamed','blabizo','hani','mohamed',022852654,'hani5@hotmail.com','17 abo bakr street abbasia');
  2060. insert into Parents(user_name, password, first_name, last_name, home_phone, email, address)
  2061. VALUES ('hani_amir','blabizo','hani','amir',0222654789,'hani_amir@yahoo.com','20 mohamed ali street masr algdeda');
  2062. #Reports
  2063.  
  2064. insert into Reports(comment, content, issue_date, reply, user_name, student_ssn, teacher_id)
  2065. values('He is good but need to practice','please check his grades','2016-11-30 11:59:59','ok thanks for your efforts','mohamed_adel',2222,1);
  2066. insert into Reports(comment, content, issue_date, reply, user_name, student_ssn, teacher_id)
  2067. values('He is good but need to practice','please check his grades','2016-11-30 11:59:59','ok thanks for your efforts','meky_mohamed',1111,1);
  2068.  
  2069. insert into Reports(comment, content, issue_date, reply, user_name, student_ssn, teacher_id)
  2070. values('Your son need to work harder','please check his grades','2016-11-30 11:59:59','ok thanks for your efforts','mohamed_adel',2222,2);
  2071. insert into Reports(comment, content, issue_date, reply, user_name, student_ssn, teacher_id)
  2072. values('Your son need to work harder','please check his grades','2016-11-30 11:59:59','ok thanks for your efforts','meky_mohamed',1111,2);
  2073.  
  2074. insert into Reports(comment, content, issue_date, reply, user_name, student_ssn, teacher_id)
  2075. values('He is good but needs to practice','please check his grades','2016-11-30 11:59:59','ok thanks for your efforts','mohamed_eslam',1222,1);
  2076. insert into Reports(comment, content, issue_date, reply, user_name, student_ssn, teacher_id)
  2077. values('He is good but needs to practice','please check his grades','2016-11-30 11:59:59','ok thanks for your efforts','mohamed_ibrahim',12822,1);
  2078.  
  2079. insert into Reports(comment, content, issue_date, reply, user_name, student_ssn, teacher_id)
  2080. values('your grades is the worst','please check his grades','2016-11-30 11:59:59','ok thanks for your efforts','mohamed_eslam',1222,2);
  2081. insert into Reports(comment, content, issue_date, reply, user_name, student_ssn, teacher_id)
  2082. values('Your son need to work harder','please check his grades','2016-11-30 11:59:59','ok thanks for your efforts','mohamed_ibrahim',12822,2);
  2083.  
  2084.  
  2085.  
  2086. insert into Reports(comment, content, issue_date, reply, user_name, student_ssn, teacher_id)
  2087. values('he is fine','please check his grades','2016-11-30 11:59:59','ok thanks for your efforts','ahmed_abdelrahman',3333,9);
  2088.  
  2089. insert into Reports(comment, content, issue_date, reply, user_name, student_ssn, teacher_id)
  2090. values('Your son need to work harder','please check his grades','2016-11-30 11:59:59','ok thanks for your efforts','seif_eldin',3355,9);
  2091. insert into Reports(comment, content, issue_date, reply, user_name, student_ssn, teacher_id)
  2092. values('he is good','please check his grades','2016-11-30 11:59:59','ok thanks for your efforts','hani_mohamed',3377,9);
  2093.  
  2094.  
  2095.  
  2096. insert into Courses (name, description, school_address, school_name)
  2097. values('Math1','Math Techniques','66 Ismail Al Kabbani','saintfatima');
  2098. insert into Courses (name, description, school_address, school_name)
  2099. values('Enlish1','learn how to describe yoursef in english','66 Ismail Al Kabbani','saintfatima');
  2100. insert into Courses (name, description, school_address, school_name)
  2101. values('Arabic1','learn how to describe yoursef in arabic','66 Ismail Al Kabbani','saintfatima');
  2102.  
  2103. insert into Courses (name, description, school_address, school_name)
  2104. values('Math2','Math Techniques','66 Ismail Al Kabbani','saintfatima');
  2105. insert into Courses (name, description, school_address, school_name)
  2106. values('English2','learn how to describe yoursef in english','66 Ismail Al Kabbani','saintfatima');
  2107. insert into Courses (name, description, school_address, school_name)
  2108. values('Arabic2','learn how to describe yoursef in arabic','66 Ismail Al Kabbani','saintfatima');
  2109.  
  2110.  
  2111.  
  2112. insert into Courses(name, description, school_address, school_name)
  2113. values('Math1','Math Techniques','8 Mostafa El Nahhas','El rowad');
  2114.  
  2115. insert into Courses(name, description, school_address, school_name)
  2116. values('Enlish','learn how to describe yoursef in english','66 Ismail Al Kabbani','saintfatima');
  2117. insert into Courses(name, description, school_address, school_name)
  2118. values('Arabic','learn how to describe yoursef in arabic','8 Mostafa El Nahhas','El rowad');
  2119.  
  2120. insert into Courses (name, description, school_address, school_name)
  2121. values('Math2','Math Techniques','66 Ismail Al Kabbani','saintfatima');
  2122. insert into Courses (name, description, school_address, school_name)
  2123. values('English2','learn how to describe yoursef in english','8 Mostafa El Nahhas','El rowad');
  2124. insert into Courses (name, description, school_address, school_name)
  2125. values('Arabic2','learn how to describe yoursef in arabic','8 Mostafa El Nahhas','El rowad');
  2126.  
  2127. #Levels
  2128.  
  2129. insert into Levels values('1st level');
  2130. insert into Levels values('2nd level');
  2131. insert into Levels values('3rd level');
  2132.  
  2133. #Levels_offer_Schools
  2134. SELECT *
  2135. FROM Levels_offer_Schools;
  2136. insert into Levels_offer_Schools values ('1st level','saintfatima','66 Ismail Al Kabbani');
  2137. insert into Levels_offer_Schools values ('2nd level','saintfatima','66 Ismail Al Kabbani');
  2138. insert into Levels_offer_Schools values ('3rd level','saintfatima','66 Ismail Al Kabbani');
  2139.  
  2140. insert into Levels_offer_Schools values ('1st level','El rowad','8 Mostafa El Nahhas');
  2141. call viewSchoolsByLevel();
  2142.  
  2143. SELECT *
  2144. FROM Schools;
  2145. CALL viewSchoolsByLevel();
  2146. #Courses_offer_Levels
  2147.  
  2148. insert into Courses_offer_Levels
  2149. values (9,'2nd level',1);
  2150. insert into Courses_offer_Levels
  2151. values (9,'2nd level',2);
  2152. insert into Courses_offer_Levels
  2153. values (9,'2nd level',3);
  2154. insert into Courses_offer_Levels
  2155. values (10,'3rd level',4);
  2156. insert into Courses_offer_Levels
  2157. values (10,'3rd level',5);
  2158. insert into Courses_offer_Levels
  2159. values (10,'3rd level',6);
  2160.  
  2161.  
  2162.  
  2163.  
  2164. #School_Activities;
  2165.  
  2166. insert into School_Activities(activity_Date, location, teacher_id, adminstrator_id, name, equipment, type, description)
  2167. values('2016-11-30 15:00:00','c5201',1,3,'how to draw','sketches and colors','drawing','teach you how to draw from skratch');
  2168. insert into School_Activities(activity_Date, location, teacher_id, adminstrator_id, name, equipment, type, description)
  2169. values('2016-11-30 15:00:00','c6201',2,4,'geometric paints','sketches and colors','drawing','teach you how to draw from geometric paints');
  2170.  
  2171.  
  2172.  
  2173. #Assignments
  2174. insert into Assignments (posting_date, due_date, content)
  2175. values('2016-10-20 23:59:59','2016-10-30 23:59:59','Solve The First two page of the workbook');
  2176.  
  2177. insert into Assignments (posting_date, due_date, content)
  2178. values('2016-10-20 23:59:59','2016-10-30 23:59:59','make a research about egypt');
  2179.  
  2180. insert into Assignments (posting_date, due_date, content)
  2181. values('2016-10-20 23:59:59','2016-10-30 23:59:59','solve the first three page of the workbook');
  2182.  
  2183.  
  2184.  
  2185. insert into Assignments (posting_date, due_date, content)
  2186. values('2016-10-20 23:59:59','2016-10-30 23:59:59','Solve The First two page of the workbook');
  2187.  
  2188. insert into Assignments (posting_date, due_date, content)
  2189. values('2016-10-20 23:59:59','2016-10-30 23:59:59','make a research about world war 2');
  2190.  
  2191. insert into Assignments (posting_date, due_date, content)
  2192. values('2016-10-20 23:59:59','2016-10-30 23:59:59','solve the first three page of the workbook');
  2193.  
  2194. #Assignments_posteBy_Teachers
  2195. insert into Assignments_posteBy_Teachers(teacher_id, course_code,assignment_number)
  2196. values (1,1,1);
  2197. insert into Assignments_posteBy_Teachers(teacher_id, course_code,assignment_number)
  2198. values (2,2,2);
  2199. insert into Assignments_posteBy_Teachers(teacher_id, course_code,assignment_number)
  2200. values (5,3,3);
  2201. insert into Assignments_posteBy_Teachers(teacher_id, course_code,assignment_number)
  2202. values (1,4,4);
  2203.  
  2204. insert into Assignments_posteBy_Teachers(teacher_id, course_code,assignment_number)
  2205. values (2,5,5);
  2206. insert into Assignments_posteBy_Teachers(teacher_id, course_code,assignment_number)
  2207. values (5,6,6);
  2208.  
  2209.  
  2210.  
  2211. #Students_taughtBy_Teachers
  2212.  
  2213. insert into Students_taughtBy_Teachers
  2214. values(1111,4,1);
  2215. insert into Students_taughtBy_Teachers
  2216. values(2222,4,1);
  2217. insert into Students_taughtBy_Teachers
  2218. values(1111,5,2);
  2219. insert into Students_taughtBy_Teachers
  2220. values(2222,5,2);
  2221. insert into Students_taughtBy_Teachers
  2222. values(1111,6,5);
  2223. insert into Students_taughtBy_Teachers
  2224. values(2222,6,5);
  2225.  
  2226. insert into Students_taughtBy_Teachers
  2227. values(1222,1,1);
  2228.  
  2229. insert into Students_taughtBy_Teachers
  2230. values(1222,2,2);
  2231.  
  2232. insert into Students_taughtBy_Teachers
  2233. values(1222,3,5);
  2234.  
  2235.  
  2236. insert into Students_taughtBy_Teachers
  2237. values(3377,8,9);
  2238.  
  2239.  
  2240.  
  2241. insert into Students_taughtBy_Teachers
  2242. values(3333,11,9);
  2243. insert into Students_taughtBy_Teachers
  2244. values(3355,11,9);
  2245.  
  2246. #Types
  2247.  
  2248. INSERT INTO Types VALUES ('international', 'saintfatima', '66 Ismail Al Kabbani');
  2249. INSERT INTO Types VALUES ('national', 'El rowad', '8 Mostafa El Nahhas');
  2250.  
  2251.  
  2252.  
  2253. #Parents_apply_Students_Schools
  2254.  
  2255. INSERT INTO Parents_apply_Students_Schools (accept, parent_user_name, student_ssn, school_name)
  2256. VALUES (1, 'mohamed_eslam', 1111, 'El rowad');
  2257.  
  2258. INSERT INTO Parents_apply_Students_Schools (accept, parent_user_name, student_ssn, school_name)
  2259. VALUES (1, 'meky_mohamed', 2222, 'saintfatima');
  2260.  
  2261.  
  2262. INSERT INTO Parents_apply_Students_Schools (accept, parent_user_name, student_ssn, school_name)
  2263. VALUES (1, 'mohamed_adel', 1111, 'saintfatima');
  2264.  
  2265.  
  2266.  
  2267. # Teachers_supervises_Teachers
  2268.  
  2269. INSERT INTO Teachers_supervises_Teachers(teacher_id1, teacher_id2)
  2270. values(1,2);
  2271.  
  2272. INSERT INTO Teachers_supervises_Teachers(teacher_id1, teacher_id2)
  2273. values(1,5);
  2274.  
  2275. -- # High_Schools
  2276.  
  2277. INSERT INTO High_Schools(name, address)
  2278. VALUES ('saintfatima','66 Ismail Al Kabbani');
  2279.  
  2280. INSERT INTO High_Schools(name, address)
  2281. VALUES ('El rowad','8 Mostafa El Nahhas');
  2282.  
  2283.  
  2284. -- # Mid_Schools
  2285.  
  2286. INSERT INTO Mid_Schools(name, address)
  2287. VALUES ('saintfatima','66 Ismail Al Kabbani');
  2288.  
  2289. INSERT INTO Mid_Schools(name, address)
  2290. VALUES ('El rowad','8 Mostafa El Nahhas');
  2291.  
  2292. -- # Elementary_Schools
  2293.  
  2294. INSERT INTO Elementary_Schools(name, address)
  2295. VALUES ('saintfatima','66 Ismail Al Kabbani');
  2296.  
  2297. INSERT INTO Elementary_Schools(name, address)
  2298. VALUES ('El rowad','8 Mostafa El Nahhas');
  2299.  
  2300. -- #Required_Supplies
  2301.  
  2302. INSERT into Required_Supplies(required_supplies, name, address) VALUES
  2303. ('Backpack and Lunchbag','saintfatima','66 Ismail Al Kabbani') ;
  2304.  
  2305. INSERT into Required_Supplies(required_supplies, name, address) VALUES
  2306. ('Eraser and Pencils','El rowad','8 Mostafa El Nahhas') ;
  2307.  
  2308.  
  2309. -- # Announcements
  2310. INSERT INTO Announcements (date, title, description, employee_id)
  2311. VALUES ('2016-11-22','English H.W','The H.W is Cancelled',4);
  2312.  
  2313. INSERT INTO Announcements (date, title, description, employee_id)
  2314. VALUES ('2016-11-22','Math Grade','All GOT THE Full Mark',3);
  2315.  
  2316. -- # Assignments_solve_Students
  2317.  
  2318. INSERT INTO Assignments_solve_Students (solution, student_ssn, assignment_number)
  2319. VALUES ('2*2=4', 1111, 1);
  2320.  
  2321.  
  2322. INSERT INTO Assignments_solve_Students (solution, student_ssn, assignment_number)
  2323. VALUES ('2*3=6', 1222, 1);
  2324.  
  2325. -- # Activities_Involve_Students
  2326.  
  2327. INSERT INTO Activities_Involve_Students (student_ssn, activity_Date, location)
  2328. VALUES (1111,'2016-11-30 15:00:00','c5201');
  2329. SELECT * from School_Activities;
  2330.  
  2331.  
  2332. INSERT INTO Activities_Involve_Students (student_ssn, activity_Date, location)
  2333. VALUES (2222,'2016-11-30 15:00:00','c6201');
  2334.  
  2335. -- #Mobile_numbers
  2336.  
  2337. INSERT INTO Mobile_numbers(mobile, parent_user_name) VALUES
  2338. ('0123749886','mohamed_adel');
  2339.  
  2340.  
  2341. INSERT INTO Mobile_numbers(mobile, parent_user_name) VALUES
  2342. ('0123749886','meky_mohamed');
  2343.  
  2344. -- # Parents_rateAndreview_Teachers
  2345.  
  2346. INSERT INTO Parents_rateAndreview_Teachers (rate, teacher_id, parent) VALUES
  2347. (4, 2, 'meky_mohamed');
  2348.  
  2349. INSERT INTO Parents_rateAndreview_Teachers (rate, teacher_id, parent) VALUES
  2350. (4, 2, 'mohamed_adel');
  2351.  
  2352. -- # Courses_has_prerequisite_Courses
  2353.  
  2354. INSERT INTO Courses_has_prerequisite_Courses (course_code1, course_code2) VALUES (4, 1);
  2355.  
  2356. INSERT INTO Courses_has_prerequisite_Courses (course_code1, course_code2) VALUES (5, 2);
  2357.  
  2358. INSERT INTO Courses_has_prerequisite_Courses (course_code1, course_code2) VALUES (6, 3);
  2359.  
  2360. -- # Parents_rateAndreview_Teachers
  2361.  
  2362. INSERT INTO Parents_rateAndreview_Teachers (rate, teacher_id, parent) VALUES (5, 2, 'ahmed_abdelrahman');
  2363.  
  2364.  
  2365. INSERT INTO Parents_rateAndreview_Teachers (rate, teacher_id, parent) VALUES (3, 5, 'mohamed_eslam');
  2366.  
  2367. INSERT INTO Parents_rateAndreview_Teachers (rate, teacher_id, parent) VALUES (4, 1, 'seif_eldin');
  2368.  
  2369. INSERT INTO Parents_rateAndreview_Teachers (rate, teacher_id, parent) VALUES (2, 1, 'meky_mohamed');
  2370.  
  2371.  
  2372.  
  2373. -- start of calling procedures
  2374.  
  2375. CALL searchForSchoolName('saintfatima');
  2376. CALL searchForSchoolAddress('66 Ismail Al Kabbani');
  2377. CALL searchForSchoolType('international');
  2378. call searchForSchoolType('national');
  2379.  
  2380. CALL viewSchoolsByLevel();
  2381.  
  2382. CALL viewSchoolAndRating('saintfatima','66 Ismail Al Kabbani');
  2383.  
  2384. INSERT INTO Employees (school_name,school_address) VALUES ('El rowad','8 Mostafa El Nahhas');
  2385. SELECT *
  2386. FROM Teachers;
  2387.  
  2388. INSERT INTO Teachers(teacher_id) VALUES (25);
  2389. CALL View_Unverified_Teachers('medo1100','keytronic');
  2390. SELECT *
  2391. FROM Adminstrators;
  2392. CALL Verify_Teacher('Youmna.Ghandor','blabizo',21,'hadyz1100','key');
  2393. # INSERT into Adminstrators(adminstrator_id);
  2394. SELECT * from Employees;
  2395. SELECT * from Students;
  2396. CALL View_Unverified_Students('ghada.ahmed','balabizo');
  2397. SELECT *
  2398. FROM Students;
  2399. SELECT *
  2400. FROM Adminstrators;
  2401. CALL Verify_Student(1111,'dodo','medo');
  2402. SELECT *
  2403. FROM Students;
  2404. CALL addAdmin('Youmna.Ghdandor','blabizo', 'hand', 'yasser', 'man', 'm', 'handman23@gmail.com', '22 faisal st', '1996-04-04',
  2405. 'Youmna.Ghandor','blabizo','national');
  2406.  
  2407. CALL View_Employees('Youmna.Ghandor','blabizo');
  2408. CALL deleteEmployeesFromSystem(10);
  2409.  
  2410. CALL updateGeneralInfo('stuf','Youmna.Ghandor','blabizo');
  2411.  
  2412. CALL updateVision('no','Youmna.Ghandor','blabizo');
  2413.  
  2414. CALL updateAddress('666 Ismail Al Kabbanii','ghada.ahmed','balabizo');
  2415. SELECT *
  2416. FROM Schools;
  2417. CALL updateEmail('keys','Youmna.Ghandor','blabizo');
  2418.  
  2419. CALL updateMission('mis','Youmna.Ghandor','blabizo');
  2420.  
  2421. CALL updateMainLangauge('oran','Youmna.Ghandor','blabizo');
  2422. SELECT *
  2423. FROM Schools;
  2424.  
  2425. CALL updatePhoneNumber('55666','Youmna.Ghandor','blabizo');
  2426.  
  2427. CALL createAnnouncement('2004-04-04','sport','try',3,'blabizo');
  2428.  
  2429. CALL createActivity('2004-04-04','GUC',3,'name','dd','ddd','sports');
  2430.  
  2431. CALL assignTeacherToActivity('2004-04-04','GUC',1,3);
  2432. # INSERT INTO Students (ssn,school_address,school_name) VALUES (1111,);
  2433. SELECT *
  2434. FROM Courses;
  2435. CALL Assign_Teacher_to_Course(3,1,1);
  2436.  
  2437. CALL assignTeacherToSuperViseTeacher(1,2,3);
  2438. CALL acceptOrRejectStudents(3,1111,1);
  2439. SELECT *
  2440. FROM Students;
  2441. SELECT *
  2442. FROM Questions;
  2443. INSERT INTO Questions (question, course_code, ssn, content) VALUES ('what ?',1,1111,'no?');
  2444. INSERT INTO Students_taughtBy_Teachers(ssn, course_code, teacher_id) VALUES (1111,1,9);
  2445. CALL Teacher_View_Questions(9);
  2446.  
  2447. CALL Teacher_Answers_Questions (9,2,'yes');
  2448. SELECT * from Students_taughtBy_Teachers;
  2449. -- insert in grades
  2450. CALL View_Students(9);
  2451. CALL Students_Without_Activity(3);
  2452. SELECT *
  2453. FROM Parents_rateAndreview_Teachers;
  2454. UPDATE Parents_rateAndreview_Teachers
  2455. SET rating = 5;
  2456. SELECT * FROM Employees;
  2457. -- reutrn float rating if appropriate value inserted
  2458. CALL Rate_Teacher_Avg(@out_value,2);
  2459. SELECT @out_value;
  2460.  
  2461.  
  2462. use test3;
  2463. SELECT *
  2464. FROM Employees;
  2465.  
  2466.  
  2467. create table Busses(
  2468. bus_number int PRIMARY KEY AUTO_INCREMENT,
  2469. route VARCHAR(200),
  2470. model VARCHAR(200),
  2471. capacity int,
  2472. school_name VARCHAR(50),
  2473. school_address VARCHAR(50),
  2474. FOREIGN KEY (school_name,school_address) REFERENCES Schools(name,address) on DELETE CASCADE on UPDATE CASCADE
  2475. );
  2476.  
  2477.  
  2478. CREATE TABLE Busses_Offeredby_Schools(
  2479. ssn int,
  2480. bus_number int,
  2481. school_name VARCHAR(50),
  2482. school_address VARCHAR(50),
  2483. cnt int,
  2484. PRIMARY KEY (ssn,bus_number,school_name,school_address),
  2485. FOREIGN KEY (ssn) REFERENCES Students(ssn) on DELETE CASCADE on UPDATE CASCADE ,
  2486. FOREIGN KEY (bus_number) REFERENCES Busses(bus_number) on DELETE CASCADE ,
  2487. FOREIGN KEY (school_name, school_address) REFERENCES Schools(name,address) on DELETE CASCADE on UPDATE CASCADE
  2488. );
  2489.  
  2490. DELIMITER //
  2491.  
  2492. CREATE PROCEDURE addBuss( b_route VARCHAR(50), b_model VARCHAR(50), cap int, s_name VARCHAR(50), s_address VARCHAR(50))
  2493. BEGIN
  2494. INSERT INTO Busses ( route, model, capacity,school_name , school_address) VALUES (b_route,b_model,cap,s_name,s_address);
  2495. END //
  2496. DELIMITER ;
  2497.  
  2498. CALL addBuss('mohandesen', 'b12', 20,'El rowad', '8 Mostafa El Nahhas');
  2499.  
  2500. SELECT *
  2501. FROM Schools;
  2502. SELECT * from Busses;
  2503.  
  2504. DELIMITER //
  2505. CREATE PROCEDURE addStudents(stu_ssn int,b_route VARCHAR(200), )
  2506. BEGIN
  2507. DECLARE mySchoolName VARCHAR(50);
  2508. DECLARE mySchoolAddress VARCHAR(50);
  2509. DECLARE available_bus_number int DEFAULT null;
  2510. SELECT S.name
  2511. INTO mySchoolName
  2512. FROM Schools S INNER JOIN Students stu on S.name = stu.school_name and S.address = stu.school_address
  2513. WHERE stu.ssn = stu_ssn;
  2514.  
  2515. SELECT S.address
  2516. INTO mySchoolAddress
  2517. FROM Schools S INNER JOIN Students stu on S.name = stu.school_name and S.address = stu.school_address
  2518. WHERE stu.ssn = stu_ssn;
  2519.  
  2520.  
  2521. SELECT B.bus_number into available_bus_number
  2522. from Busses B inner JOIN Schools S on S.name = B.school_name and S.address = B.school_address
  2523. WHERE S.name = mySchoolName and S.address = mySchoolAddress and B.capacity >0
  2524. LIMIT 1;
  2525.  
  2526. IF available_bus_number IS NULL
  2527. THEN
  2528. SELECT 'no bus available';
  2529. ELSE
  2530. INSERT INTO Busses (route, model, capacity, school_name, school_address) VALUES ();
  2531. END IF;
  2532.  
  2533.  
  2534.  
  2535. END //
  2536. DELIMITER ;
  2537.  
  2538. DELIMITER //
  2539. CREATE PROCEDURE avg_cap(OUT res FLOAT, s_name VARCHAR(50), s_address VARCHAR(50))
  2540. BEGIN
  2541. DECLARE total FLOAT;
  2542. DECLARE cnt FLOAT;
  2543.  
  2544. SELECT count(B.capacity)
  2545. INTO cnt
  2546. FROM Schools S inner JOIN Busses B on S.name = b.school_name and S.address = B.school_address
  2547. WHERE S.name = B.school_name and S.address = s_address;
  2548.  
  2549. SELECT sum(B.capacity)
  2550. INTO cnt
  2551. FROM Schools S inner JOIN Busses B on S.name = b.school_name and S.address = B.school_address
  2552. WHERE S.name = B.school_name and S.address = s_address;
  2553.  
  2554. SET res = total / cnt;
  2555.  
  2556. END;
  2557. DELIMITER ;
  2558.  
  2559.  
  2560. use test3;
  2561.  
  2562. # select * from Schools S where S.name = 'saintfatima' and S.address $arr1[1];
  2563.  
  2564. select * from Schools S inner join Employees E on S.name = E.school_name and S.address = E.school_address inner join Teachers T on T.teacher_id = E.employee_ID where S.name = 'El rowad' and S.address = '8 Mostafa El Nahhas';
  2565.  
  2566. SELECT *
  2567. FROM Schools;
  2568. CALL viewSchoolAndRating('El rowad','8 Mostafa El Nahhas');
  2569. SELECT *
  2570. FROM Parents_rateAndreview_Schools;
  2571.  
  2572.  
  2573. INSERT INTO Parents_rateAndreview_Schools (rate, review, parent_username, school_name, school_address)
  2574. VALUES (5,'good','ahmed_abdelrahman','El rowad','8 Mostafa El Nahhas');
  2575. SELECT *
  2576. FROM Parents;
  2577.  
  2578. SELECT * FROM Students WHERE user_name = 'dodo' and password = 'medo';
  2579.  
  2580. SELECT * FROM Parents WHERE user_name = 'ahmed_abdelrahman' and password = 'blabizo';
  2581.  
  2582. SELECT *
  2583. FROM Parents;
  2584.  
  2585. # INSERT INTO Parents (user_name, password, first_name, last_name, home_phone, email, address) VALUES (name,pwd,first_name,last_name,tel,email,add);
  2586. use test3;
  2587. CREATE PROCEDURE createActivity2(date DATETIME, newlocation VARCHAR(50),
  2588. newadminstrator_id INT,
  2589. newname VARCHAR(50),
  2590. newequipment VARCHAR(50),
  2591. newtype VARCHAR(50),
  2592. newdescription VARCHAR(50),
  2593. tid int)
  2594. BEGIN
  2595. INSERT INTO School_Activities (activity_Date, location, adminstrator_id, name, equipment, type, description,teacher_id)
  2596. VALUES (date, newlocation, newadminstrator_id, newname, newequipment, newtype, newdescription,tid);
  2597.  
  2598. END ;
  2599. DELIMITER //
  2600.  
  2601. CREATE PROCEDURE viewSchoolsByLevel2()
  2602. BEGIN
  2603. SELECT
  2604. S.name,
  2605. S.address,
  2606. los.level
  2607. FROM Schools S inner join Levels_offer_Schools los on los.school_name = S.name and los.school_address = S.address;
  2608.  
  2609. END //
  2610. SELECT *
  2611. FROM Mid_Schools;
  2612. SELECT *
  2613. FROM Schools S inner join High_Schools M on S.name = M.name and S.address = M.address;
  2614.  
  2615. use test3;
  2616. SELECT *
  2617. FROM Employees inner join Adminstrators on employee_ID = Adminstrators.adminstrator_id;
  2618. SELECT *
  2619. FROM Employees inner join Teachers on employee_ID = teacher_id;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement