这是我的设置:
旧表
Location [ID, Country, Region]
IpAddress [ID, IP]
Session [ID, IpAddressId, LocationId]
新表
Country[ID, Country]
Region[ID, Region]
IpAddress[ID, IP]
Profile[ID, IpAddressId, CountryId, RegionId]
Session[ID, ProfileId]
我已经解构了位置表。现在我迷失在如何插入Profile表的杂草中,并将其与会话相关联。需要注意的是,旧的Location表仍然存在,我不打算将其删除,直到Profile表完全更新为止。任何帮助将不胜感激。
答案 0 :(得分:0)
要创建Profile
表,您需要构建一个连接每个表的关系的查询,但是您不能使用id
列将新表链接到旧表,因为那些不再是关系型的。这应该适合你:
--INSERT INTO Profile (IpAddressId, CountryId, RegionId)
SELECT S.IpAddressId, C.ID, R.ID
FROM Session S --Old Session table
INNER JOIN Location L on S.LocationId = L.ID
INNER JOIN Country C on C.Country = L.Country
INNER JOIN Region R on R.Region = L.Region
注意:假设IpAddress
表保持不变,并使用相同的IpAddressId
。
那就是说,我认为您的问题是如何将其链接到新的Session
表。要回答这个问题,我们需要知道新的Session
表将会做什么......但一般来说,你会以与上述查询相同的方式填充它。将其加入匹配的数据上的相应表格,以获得新的id
关系。