Я новичок в Postgresql и у меня есть три таблицы:
=# SELECT * FROM employee_names;
employee_id | employee_name
-------------+---------------
1 | Johannes
2 | Günter
3 | Elsabeth
=# SELECT * FROM projects;
employee_id | last_project
-------------+--------------
1 | 5
2 | 15
3 | 8
=# SELECT * FROM last_project_systems_used;
employee_id | last_project | systems_used
-------------+--------------+--------------
1 | 5 | 11
1 | 5 | 18
2 | 15 | 4
3 | 8 | 10
3 | 8 | 7
3 | 8 | 2
employee_id
в employee_names
- это первичный ключ и серийный номер. employee_name
- этоуникальный.Да, я знаю, что в типичных случаях использования имя НЕ должно обрабатываться уникально, так как люди могут легко иметь одинаковые имена, но в моем примере это уникально. employee_id
в projects
- это ключ pri. last_project
не является нулевым целым числом, и число может повторяться в обеих таблицах (номер проекта последнего проекта, над которым они работали) systems_used
уникально (номер системы, с которой они работали, будетвсегда быть уникальными значениями)
Подводя итог:
- Иоганнес имеет значение employee_id 1, его последний проект был # 5, и он использовал обе системы 11 и 18 в своемproject.
- Günter имеет employee_id 2, его последний проект был # 15, и он использовал обе системы 4. В своем проекте.
- Elsabeth имеет employee_id 3, ее последний проект был #8, и она использовала системы 10, 7 и 2. в своем проекте.
Мне нужно выполнить запрос вставки примерно так:
INSERT INTO last_project_systems_used
VALUES ((SELECT employee_id FROM employee_names
WHERE employee_name = 'Günter'),
(SELECT last_project FROM projects
WHERE (SELECT employee_id FROM employee_name
WHERE employee_name = 'Günter')), 9);
Это будет проверять, чтоemployee_id предназначен для Гюнтера (2), найдите его последний проектt number is (15) и добавьте системный номер 9 в таблицу.
Это обновление будет выглядеть следующим образом:
employee_id | last_project | systems_used
-------------+--------------+--------------
1 | 5 | 11
1 | 5 | 18
2 | 15 | 4
3 | 8 | 10
3 | 8 | 7
3 | 8 | 2
2 | 15 | 9
Хотя у меня возникли проблемы с частью, где я получил последний проектномер от сотрудника с именем Гюнтер, так как в таблице проектов указан только его идентификатор, а не его имя.
Любая помощь будет признательна.