У меня есть база данных управления навыками для фабричных рабочих, которая имеет такие данные:
skill 46: Thread work tap & die
skill 49: Welding proficiency
skill 51: CMM operator
skill 52: Lathe operator
skill 65: Fork Lift operator
skill 71: Portable crane operator
В таблице JOB SKILLS содержатся навыки, относящиеся к каждой должности.Например: Идентификатор задания 220 - это уровень I механика (определяется с меньшим количеством навыков, чем уровень II).Идентификатор задания 221 - это уровень механика II (он определен с большим количеством навыков, чем уровень I).
Вот таблица JOB SKILLS:
create table job_skills (job_ID int, skill_ID int, proficiency_level int);
insert job_skills (220, 46, 2);
insert job_skills (220, 49, 2);
insert job_skills (220, 51, 2);
insert job_skills (220, 52, 2);
insert job_skills (221, 46, 3);
insert job_skills (221, 49, 3);
insert job_skills (221, 51, 3);
insert job_skills (221, 52, 3);
insert job_skills (221, 65, 2);
insert job_skills (221, 71, 2);
Затем есть таблица EMPLOYEE SKILLS, которая обслуживает каждого сотрудника.badge_ID и навыки, которыми они в настоящее время владеют. Роберт Мерфи (badge_ID = 792) в настоящее время является механиком I уровня. Он владеет всеми навыками, которые он должен иметь в наборе навыков I уровня механики.Вот текущая информация Роберта в таблице empl_skills:
create table empl_skills (badge_ID int, skill_ID int, proficiency_level int);
insert empl_skills (792, 46, 3);
insert empl_skills (792, 49, 2);
insert empl_skills (792, 51, 2);
insert empl_skills (792, 52, 3);
В-третьих, должность Роберта хранится в основной таблице сотрудников:
create table empl_master (badge_ID int, firstname varchar(20), lastname varchar(20), job_ID int);
insert empl_master (792, 'ROBERT', 'MURPHY', 220);
Теперь, наконец, вопрос: Роберт Мерфиполучает повышение от Механика I до Механика II.Я хотел бы добавить его новые навыки, которых ему не хватает между Уровнем I и Уровнем II, в таблицу empl_skills и установить начальный уровень мастерства на 0. Но я не хочу нарушать текущие записи об уровне навыков и навыков, которые уже существуют.В рамках его повышения я хочу добавить только навык 65 и навык 71 - это два новых дополнительных навыка, которые он должен будет поддерживать на уровне Механика II.Можно ли сделать что-то вроде INSERT INTO ... WHERE NOT EXISTS, каким-то образом связав эти три таблицы вместе в одном операторе SQL?
Кроме того, в цикле продвижения ко времени, когда я буду готов выполнить свою INSERTутверждение, что запись empl_master Роберта уже будет обновлена с установкой job_ID с 220 до 221.
UPDATE empl_master set job_ID=221 WHERE badge_ID=792;
Результаты empl_skills должны выглядеть следующим образом:
badge_ID skill_ID proficiency_level
-------- -------- -----------------
792 46 3
792 49 2
792 51 2
792 52 3
792 65 0 <-- new rows difference between
792 71 0 <-- job titles 220 and 221
снова TIA для вашей потрясающей помощиДжон