Advertisement
Guest User

Untitled

a guest
Jun 16th, 2016
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 7.14 KB | None | 0 0
  1. CREATE TABLE Client (
  2.     id            INTEGER PRIMARY KEY AUTOINCREMENT,
  3.     mail          TEXT,
  4.     name          TEXT,
  5.     password      TEXT,
  6.     UNIQUE (mail)
  7. );
  8.  
  9. CREATE TABLE Administrators (
  10.     id            INTEGER PRIMARY KEY AUTOINCREMENT,
  11.     mail          TEXT,
  12.     name          TEXT,
  13.     password      TEXT,
  14.     UNIQUE (mail)
  15. );
  16.  
  17. CREATE TABLE Group_Products (
  18.     id          INTEGER PRIMARY KEY AUTOINCREMENT,
  19.     name        TEXT
  20. );
  21.  
  22.  
  23. CREATE TABLE Orders (
  24.     id          INTEGER PRIMARY KEY AUTOINCREMENT,
  25.     DATE        INTEGER                  DEFAULT [strftime('%s', 'now')],
  26.     client_mail TEXT,
  27.     STATUS      TEXT,
  28.     adres       TEXT,
  29.     FOREIGN KEY (client_mail)            REFERENCES Client (mail)
  30. );
  31.  
  32. CREATE TABLE Products (
  33.     id          INTEGER PRIMARY KEY AUTOINCREMENT,
  34.     id_group    INTEGER,
  35.     name        TEXT,
  36.     ingredients TEXT,
  37.     mass        INTEGER,
  38.     price       INTEGER,
  39.     FOREIGN KEY (id_group)              REFERENCES Group_Products (id)
  40. );
  41.  
  42. CREATE TABLE Product_In_Order (
  43.     id_product  INTEGER,
  44.     id_order    INTEGER,
  45.     PRIMARY KEY (id_product, id_order)
  46.     FOREIGN KEY (id_product)            REFERENCES Produts (id),
  47.     FOREIGN KEY (id_order)              REFERENCES Orders (id)
  48. );
  49.  
  50.  
  51. CREATE INDEX idx_Clients ON Client (
  52.     mail
  53. );
  54.  
  55. CREATE INDEX idx_Orders ON Orders (
  56.     DATE,
  57.     client_mail
  58. );
  59.  
  60.  
  61. INSERT INTO Client (id, mail, name, password) VALUES ('1', 'john_wiliams@gmail.com', 'Джон Таунер Уильямс', 'john_wil');
  62. INSERT INTO Client (mail, name, password) VALUES ('pechkin@awake.su', 'Петр Сергеевич Печкин', 'pechka_petr');
  63. INSERT INTO Client (mail, name, password) VALUES ('joke@gmail.com', 'Джокер', 'joke');
  64. INSERT INTO Client (mail, name, password) VALUES ('alex@gmail.com', 'Алексей Ложкин', 'alex');
  65. INSERT INTO Client (mail, name, password) VALUES ('new@gmail.com', 'Игорь', 'joke');
  66. INSERT INTO Client (mail, name, password) VALUES ('abc@gmail.com', 'Майкл', 'simple');
  67. INSERT INTO Client (mail, name, password) VALUES ('stepan@gmail.com', 'Степан Спенович Степыч', 'stepych');
  68.  
  69. INSERT INTO Administrators (id, mail, name, password) VALUES ('1', 'wayne@gmail.com', 'Брюс Уейн', 'bat');
  70. INSERT INTO Administrators (mail, name, password) VALUES ('admin@awake.su', 'Awakens', 'star');
  71.  
  72. INSERT INTO Group_Products (id, name) VALUES ('1', 'Пиццы');
  73. INSERT INTO Group_Products (name) VALUES ('Напитки');
  74. INSERT INTO Group_Products (name) VALUES ('Салаты');
  75. INSERT INTO Group_Products (name) VALUES ('Суши и роллы');
  76.  
  77. INSERT INTO Products (id, name, id_group, ingredients, mass, price) VALUES ('1', 'Пицца Мексиканская', '1', 'Тесто, соус чили, курица, помидоры', '260', '560');
  78. INSERT INTO Products (name, id_group, ingredients, mass, price) VALUES ('Пицца Сырная', '1', 'Тесто, сыр, курица', '340', '320');
  79. INSERT INTO Products (name, id_group, ingredients, mass, price) VALUES ('Пицца Пепперони', '1', 'Тесто, сыр, соус чили, колбаса', '320', '730');
  80. INSERT INTO Products (name, id_group, ingredients, mass, price) VALUES ('Coca Cola', '2', 'Вода, сахар, ароматизаторы', '100', '650');
  81. INSERT INTO Products (name, id_group, ingredients, mass, price) VALUES ('Sprite', '2', 'Вода, сахар, ароматизаторы', '100', '640');
  82. INSERT INTO Products (name, id_group, ingredients, mass, price) VALUES ('Ролл Цезарь', '4', 'Лаваш, курица, салат', '120', '350');
  83. INSERT INTO Products (name, id_group, ingredients, mass, price) VALUES ('Ролл Острый', '4', 'Лаваш, курица, соус чили', '130', '770');
  84. INSERT INTO Products (name, id_group, ingredients, mass, price) VALUES ('Морс', '2', 'Вода, сахар, ягоды', '150', '540');
  85. INSERT INTO Products (name, id_group, ingredients, mass, price) VALUES ('Салат Крабовый', '3', 'Салат, овощи, крабовые палочки', '180', '650');
  86. INSERT INTO Products (name, id_group, ingredients, mass, price) VALUES ('Салат Цезарь', '3', 'Салат, курица, сухари, соус цезарь', '230', '530');
  87.  
  88. INSERT INTO Orders (id, DATE, client_mail, STATUS, adres) VALUES ('1', strftime('%s', 'now'), 'alex@gmail.com', 'Обрабатывается', 'Владивосток');
  89. INSERT INTO Orders (DATE, client_mail, STATUS, adres) VALUES (strftime('%s', 'now'), 'alex@gmail.com', 'Доставлено', 'Артём');
  90. INSERT INTO Orders (DATE, client_mail, STATUS, adres) VALUES (strftime('%s', 'now'), 'new@gmail.com', 'Обрабатывается', 'Уссурийск');
  91. INSERT INTO Orders (DATE, client_mail, STATUS, adres) VALUES (strftime('%s', 'now'), 'new@gmail.com', 'Обрабатывается', 'Владивосток');
  92. INSERT INTO Orders (DATE, client_mail, STATUS, adres) VALUES (strftime('%s', 'now'), 'joke@gmail.com1', 'Обрабатывается', 'Артём');
  93. INSERT INTO Orders (DATE, client_mail, STATUS, adres) VALUES (strftime('%s', 'now'), 'john_wiliams@gmail.com', 'Обрабатывается', 'Владивосток');
  94. INSERT INTO Orders (DATE, client_mail, STATUS, adres) VALUES (strftime('%s', 'now'), 'john_wiliams@gmail.com', 'Доставлено', 'Владивосток');
  95. INSERT INTO Orders (DATE, client_mail, STATUS, adres) VALUES (strftime('%s', 'now'), 'pechkin@awake.su', 'Доставлено', 'Владивосток');
  96.  
  97. INSERT INTO Product_In_Order VALUES ('1', '2');
  98. INSERT INTO Product_In_Order VALUES ('2', '4');
  99. INSERT INTO Product_In_Order VALUES ('3', '4');
  100. INSERT INTO Product_In_Order VALUES ('3', '2');
  101. INSERT INTO Product_In_Order VALUES ('4', '2');
  102. INSERT INTO Product_In_Order VALUES ('4', '6');
  103. INSERT INTO Product_In_Order VALUES ('4', '3');
  104. INSERT INTO Product_In_Order VALUES ('5', '6');
  105. INSERT INTO Product_In_Order VALUES ('5', '2');
  106. INSERT INTO Product_In_Order VALUES ('5', '4');
  107. INSERT INTO Product_In_Order VALUES ('6', '4');
  108. INSERT INTO Product_In_Order VALUES ('6', '2');
  109. INSERT INTO Product_In_Order VALUES ('7', '1');
  110. INSERT INTO Product_In_Order VALUES ('8', '1');
  111. INSERT INTO Product_In_Order VALUES ('8', '4');
  112. INSERT INTO Product_In_Order VALUES ('8', '8');
  113.  
  114.  
  115.  
  116. /*
  117. * Удаление всех таблиц
  118. DROP TABLE Product_In_Order;
  119. DROP TABLE Products;
  120. DROP TABLE Group_Products;
  121. DROP TABLE Orders;
  122. DROP TABLE Client;
  123. DROP TABLE Administrators;
  124. */
  125.  
  126. --
  127. SELECT cl_name AS 'Имя клиента', Group_Products.name AS 'Группа товаров', cl_count AS 'Количество заказов', price_sum AS 'Общая сумма заказа'
  128. FROM
  129.   (
  130.     SELECT *, name AS cl_name
  131.     FROM
  132.        (
  133.           (
  134.             SELECT  client_mail, id_group, COUNT(client_mail) AS cl_count, SUM(price) AS price_sum
  135.             FROM(
  136.                    ( Products JOIN Product_In_Order ON  Products.id = Product_In_Order.id_product)
  137.                    JOIN Orders
  138.                    ON id_order = Orders.id
  139.                 )
  140.             GROUP BY client_mail, id_group
  141.           )
  142.           JOIN
  143.           Client
  144.           ON Client.mail = client_mail
  145.       )
  146.   )
  147. JOIN
  148. Group_Products
  149. ON Group_Products.id = id_group
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement