Я пытаюсь найти лучший Transact-SQL для преобразования нереляционных таблиц в таблицы, которые являются более реляционными и поддерживают внешние ключи.
Предположим, у меня есть таблица ФРУКТОВ
Id Name USState
1 Apple Washington
2 Pineapple Hawaii
3 Orange Florida
4 Peach Georgia
etc
Я хочу, чтобы Штаты были их собственной таблицей с идентификатором и именем:
INSERT INTO USSTATE (Name) Select DISTINCT USState from FRUIT
Теперь у меня есть таблица USSTATE
Id Name
1 Alabama
2 Alaska
etc.
Как мне теперь обновить значение USState в таблице FRUIT, указав рекурсивный идентификатор USSTATE?
Я могу сделать это Государство за государством
DECLARE @USSTATE nvarchar(100)
Set @USSTATE = 'Alabama'
Update FRUIT Set USState = (SELECT Id from USSTATE where Name like @USSTATE)
Set @USSTATE = 'Alaska' -- do this for each State? Arghh!!!
и т. Д. И т. Д.
, но я хочу сделать это рекурсивно. Спасибо за любую помощь?