1.sql 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. begin;
  2. -- Создаем таблицу званий
  3. create table ranks (id serial primary key, name varchar(32));
  4. -- Создаем таблицу пользователей
  5. create table users (id serial primary key, name varchar(64), rank_id integer);
  6. -- Привязываем users(rank_id) -> ranks(id)
  7. alter table users add foreign key(rank_id) references ranks(id);
  8. -- Заполняем звания
  9. insert into ranks(name) values ('Рядовой');
  10. insert into ranks(name) values ('Ефрейтор');
  11. insert into ranks(name) values ('Младший сержант');
  12. insert into ranks(name) values ('Сержант');
  13. insert into ranks(name) values ('Старший сержант');
  14. insert into ranks(name) values ('Старшина');
  15. insert into ranks(name) values ('Прапорщик');
  16. insert into ranks(name) values ('Старший прапорщик');
  17. insert into ranks(name) values ('Младший лейтенант');
  18. insert into ranks(name) values ('Лейтенант');
  19. insert into ranks(name) values ('Старший лейтенант');
  20. insert into ranks(name) values ('Капитан');
  21. insert into ranks(name) values ('Майор');
  22. insert into ranks(name) values ('Подполковник');
  23. insert into ranks(name) values ('Полковник');
  24. insert into ranks(name) values ('Генерал майор');
  25. insert into ranks(name) values ('Генерал лейтенант');
  26. insert into ranks(name) values ('Генерал полковник');
  27. insert into ranks(name) values ('Генерал армии');
  28. insert into ranks(name) values ('Маршал России');
  29. -- Обновляем username(varchar) -> user_id(integer) в measurement_batch
  30. alter table measurement_batch rename column username to user_id;
  31. alter table measurement_batch alter column user_id type integer using null;
  32. -- Привязываем measurement_batch(user_id) -> users(id)
  33. alter table measurement_batch add foreign key(user_id) references users(id);
  34. -- Заполняем тестовые данные:
  35. -- -- Пользователь
  36. insert into users(name, rank_id) values ('Левитан Всеволод Романович', (select id from ranks order by id desc limit 1));
  37. -- -- Измерение
  38. insert into measurement_batch(start_period, user_id, pos_x, pos_y) values (now(), (select id from users limit 1), 69.00, 42.00);
  39. commit;
  40. -- Проверяем
  41. select batch.id, batch.start_period, concat(rnk.name, ' ', usr.name), batch.pos_x, batch.pos_y from measurement_batch batch join users usr on batch.user_id = usr.id join ranks rnk on usr.rank_id = rnk.id;