Я постараюсь быть кратким и лаконичным, у меня есть эта таблица, которая содержит строки данных.

enter image description here

У меня также есть 3 отдельные таблицы, Surgery, TypeOfSurgery и Процедура, каждая из которых заполнена дополнительными данными, и каждая должна содержать Id (внешний ключ) для предыдущей таблицы.

Например, у TypeOfSurgery есть столбец FK SurgeryId, у процедуры есть столбец FK TypeOfSurgeryId и т. д. Мне нужно обновить существующие записи в этих таблицах!

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

ОЖИДАЕМЫЙ ВЫХОД: Если я выберу абдоминальную хирургию, следующий выпадающий список должен быть заполнен аппендэктомией и кесаревым сечением, далее, если я выберу аппендэктомию, следующий выпадающий список должен быть заполнен процедурой A, а если я выберу кесарево сечение, следующий выпадающий список должен содержать процедуру B и процедуру C и т. Д. ..

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

Благодарность!

-1
eligible_net 19 Дек 2019 в 11:15
Помог ли мой ответ?
 – 
Nick.McDermaid
27 Дек 2019 в 12:34

1 ответ

Похоже, вы спрашиваете, как разбить эти денормализованные данные на три разные таблицы.

Вот как бы я это сделал.

(Я бы обычно не отвечал на вопрос, где пост не содержит DDL)

Сначала убедитесь, что все три таблицы назначения имеют поле identity, определенное для PK, чтобы ключи генерировались автоматически.

Заполните Surgery. SurgeryID в этой таблице должно быть IDENTITY

INSERT INTO Surgery (SurgeryName)
SELECT DISTINCT Surgery FROM YourTable

Заполните TypeOfSurgery. TypeOfSurgeryId должен быть IDENTITY

INSERT INTO TypeOfSurgery (SurgeryID, TypeOfSurgeryName)
SELECT DISTINCT S.SurgeryID, SRC.TypeOfSurgery 
FROM YourTable SRC
INNER JOIN Surgery S
ON S.SurgeryName = SRC.Surgery 

Заполните Procedure. ProcedureId должен быть IDENTITY

INSERT INTO Procedure (TypeOfSurgeryId, ProcedureName)
SELECT DISTINCT S.TypeOfSurgeryId, SRC.Procedure
FROM YourTable SRC
INNER JOIN TypeOfSurgery S
ON S.TypeOfSurgeryName = SRC.TypeOfSurgery 
0
Nick.McDermaid 19 Дек 2019 в 15:36