Advertisement
Guest User

mysql

a guest
Apr 17th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 2.93 KB | None | 0 0
  1. DROP DATABASE IF EXISTS stock_taking_db;
  2. CREATE DATABASE stock_taking_db;
  3. USE stock_taking_db;
  4.  
  5. CREATE TABLE People (
  6.     id INTEGER AUTO_INCREMENT NOT NULL,
  7.     name VARCHAR(50) NOT NULL,
  8.     worker_id INTEGER NOT NULL,
  9.  
  10.     PRIMARY KEY(id)
  11. );
  12.  
  13. CREATE TABLE Techs (
  14.     id INTEGER AUTO_INCREMENT NOT NULL,
  15.     brand VARCHAR(100) NOT NULL,
  16.     description VARCHAR(500),
  17.     p_id INTEGER,
  18.     date_taken DATE,
  19.    
  20.     PRIMARY KEY(id),
  21.     FOREIGN KEY(p_id) REFERENCES People(id)
  22. );
  23.  
  24. CREATE TABLE Categories (
  25.     id INTEGER AUTO_INCREMENT NOT NULL,
  26.     name VARCHAR(50) NOT NULL,
  27.     tech_count INTEGER,
  28.    
  29.     PRIMARY KEY(id)
  30. );
  31.  
  32. CREATE TABLE TechCategories (
  33.     id INTEGER AUTO_INCREMENT NOT NULL,
  34.    
  35.     tech_id INTEGER NOT NULL,
  36.     category_id INTEGER NOT NULL,
  37.    
  38.     PRIMARY KEY(id),
  39.     FOREIGN KEY(tech_id) REFERENCES Techs(id),
  40.     FOREIGN KEY(category_id) REFERENCES Categories(id)
  41. );
  42.  
  43. ///////////////////////////////////////////
  44.  
  45. CREATE TRIGGER increaseCountIn
  46. AFTER INSERT ON TechCategories
  47. FOR EACH ROW
  48.     UPDATE Categories SET tech_count = (tech_count + 1)
  49.     WHERE NEW.category_id = Categories.id;
  50.    
  51. CREATE TRIGGER decreaseCountIn
  52. AFTER UPDATE ON TechCategories
  53. FOR EACH ROW
  54.     UPDATE Categories SET tech_count = (tech_count - 1)
  55.     WHERE NEW.category_id = Categories.id;
  56.  
  57.  
  58.    
  59. INSERT INTO People(name, worker_id) VALUES ('Pesho Programista', 'pe60');
  60. INSERT INTO People(name, worker_id) VALUES ('Gosho Ivanov', 'go60');
  61. INSERT INTO People(name, worker_id) VALUES ('Tosho Todorov', 'to60');
  62.  
  63.  
  64. INSERT INTO Techs (brand, description, p_id, date_taken) VALUES ('DELL', 'computer', 1, now());
  65. INSERT INTO Techs (brand, description, p_id, date_taken) VALUES ('Samsung Galaxy', 'smartphone', 2, now());
  66. INSERT INTO Techs (brand, description) VALUES ('Nikon D7000', 'DSLR camera');
  67. INSERT INTO Techs (brand, description) VALUES ('Lenovo 310', 'laptop');
  68.  
  69. INSERT INTO Categories(id,name) VALUES (1,'electronics');
  70. INSERT INTO Categories(id,name) VALUES (2,'computers');
  71. INSERT INTO Categories(id,name) VALUES (3,'cameras');
  72. INSERT INTO Categories(id,name) VALUES (4,'clothes');
  73.  
  74. INSERT INTO TechCategories(tech_id, category_id) VALUES (1, 1);
  75. INSERT INTO TechCategories(tech_id, category_id) VALUES (1, 2);
  76. INSERT INTO TechCategories(tech_id, category_id) VALUES (2, 1);
  77. INSERT INTO TechCategories(tech_id, category_id) VALUES (2, 2);
  78. INSERT INTO TechCategories(tech_id, category_id) VALUES (3, 1);
  79. INSERT INTO TechCategories(tech_id, category_id) VALUES (3, 2);
  80. INSERT INTO TechCategories(tech_id, category_id) VALUES (4, 1);
  81. INSERT INTO TechCategories(tech_id, category_id) VALUES (4, 2);
  82.  
  83. /////////////////////////////////////////
  84.  
  85. SELECT * FROM Techs
  86. WHERE p_id IS NULL OR date_taken IS NULL;
  87.  
  88. SELECT * FROM Techs
  89. WHERE p_id = 1;
  90.  
  91. SELECT p.id, p.name, t.brand, t.description, t.date_taken FROM People as p
  92. INNER JOIN Techs as t ON p_id = p.id
  93. GROUP BY p.id, p.name, t.brand, t.description, t.date_taken;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement