создавать меньшие таблицы из больших таблиц на основе условия - PullRequest
0 голосов
/ 24 мая 2019

У меня есть большая таблица, для которой я хочу создать несколько таблиц на основе данных большой таблицы, но я не хочу менять большую таблицу.

рассмотрим схему большой таблицы:

Person (id, Fname, Lname, ssn, role)

роль: роль человека может быть: менеджер, учитель и ученик.

теперь я хочу 3 таблицы меньшего размера на основероль людей.Учитель (id, Fname, Lname, ssn)

Ученик (id, Fname, Lname, ssn)

Менеджер (id, Fname, Lname, ssn)

Яищу запрос, подобный приведенному ниже, но я не знаю правильный синтаксис.

select *
case 
        when P.role = 'student' then insert into Student(id, Fname, Lname, ssn) values (P.id, P.Fname, P.Lname, P.ssn)
        when P.role = 'teacher' then ...
        when P.role = 'manager' then ...
end
from person as P

note: ... нотация означает, что запрос такой же, как запрос Student с изменением имени таблицы.

1 Ответ

0 голосов
/ 24 мая 2019

Используйте отдельные вставки для каждой таблицы:

insert into student ( id, Fname, Lname, ssn )
    select P.id, P.Fname, P.Lname, P.ssn
    from person p
    where p.role = 'student';

и т. Д.

Или просто используйте представления:

create view v_students as
    select P.id, P.Fname, P.Lname, P.ssn
    from person p
    where p.role = 'student';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...