Advertisement
Guest User

Untitled

a guest
Mar 13th, 2019
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. DROP DATABASE IF EXISTS db;
  2. CREATE DATABASE db;
  3. USE db;
  4.  
  5. CREATE TABLE Participant(
  6.     id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  7.     p_name VARCHAR(256) NOT NULL,
  8.     p_type ENUM('daskal', 'ne-daskal')
  9. );
  10.  
  11. CREATE TABLE Groups(
  12.     id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  13.     g_name VARCHAR(256) NOT NULL    
  14. );
  15.  
  16. CREATE TABLE ParticipantsInGroup(
  17.     id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  18.     group_id INT NOT NULL,
  19.     participant_id INT NOT NULL,
  20.     FOREIGN KEY (group_id) REFERENCES Groups(id),
  21.     FOREIGN KEY (participant_id) REFERENCES Participant(id)
  22. );
  23.  
  24. #1
  25. INSERT INTO Participant(p_name, p_type) VALUE ('Aleksandrof', 'daskal');
  26. INSERT INTO Participant(p_name, p_type) VALUE ('Freneca', 'daskal');
  27. INSERT INTO Participant(p_name, p_type) VALUE ('Az', 'ne-daskal');
  28. INSERT INTO Participant(p_name, p_type) VALUE ('Ti', 'ne-daskal');
  29.  
  30. INSERT INTO Groups(g_name) VALUES ('purvi klas');
  31. INSERT INTO Groups(g_name) VALUES ('vtori klas');
  32. INSERT INTO Groups(g_name) VALUES ('treti klas');
  33.  
  34. INSERT INTO ParticipantsInGroup(group_id, participant_id) VALUES (1, 1);
  35. INSERT INTO ParticipantsInGroup(group_id, participant_id) VALUES (1, 3);
  36. INSERT INTO ParticipantsInGroup(group_id, participant_id) VALUES (1, 4);
  37.  
  38. INSERT INTO ParticipantsInGroup(group_id, participant_id) VALUES (2, 2);
  39.  
  40. #2
  41. SELECT g.g_name, p.p_name, p.p_type FROM Groups g
  42. LEFT JOIN ParticipantsInGroup pg ON g.id = pg.group_id
  43. LEFT JOIN Participant p ON pg.participant_id = p.id;
  44.  
  45. #3
  46. SELECT g.g_name, COUNT(pg.participant_id) FROM Groups g
  47. LEFT JOIN ParticipantsInGroup pg ON g.id = pg.group_id
  48. GROUP BY g.g_name;
  49.  
  50. #4
  51. SELECT g.g_name, COUNT(p.p_type = 'ne-daskal') FROM Groups g
  52. LEFT JOIN ParticipantsInGroup pg ON g.id = pg.group_id
  53. LEFT JOIN Participant p ON pg.participant_id = p.id AND p.p_type = 'ne-daskal'
  54. GROUP BY g.g_name;
  55.  
  56. #5
  57. SELECT g.g_name, COUNT(p.p_type = 'daskal') FROM Groups g
  58. LEFT JOIN ParticipantsInGroup pg ON g.id = pg.group_id
  59. LEFT JOIN Participant p ON pg.participant_id = p.id AND p.p_type = 'daskal'
  60. GROUP BY g.g_name;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement