第一张表的内容已存在,后面三张表已建好,内容都是根据第一张表的内容生成的
1.表Jumper1
FromDevice FromPin FromNet ToDevice ToPin ToNet
U2 30 M30 U3 14 M14
Jp1 1 M1 Jp1 2 M2
Jp2 11 M11 Jp2 12 M12
          
2.表Jumper2
ID FromDevice FromPin FromNet ToDevice ToPin ToNet WkingNetName
1 U2 30 M30 U3 14 M14 M30_M14
2 Jp1 1 M1 Jp1 2 M2 M1_M2
3 Jp2 11 M11 Jp2 12 M12 M11_M12
          
Insert into jumper2 (FromDevice, FromPin, FromNet, ToDevice, ToPin, ToNet, WkingNetName) select * , fromnet || '_' || tonet from jumper1 ; 3.新的工作网络名表WkingNetName
ID Name
1 M30_M14
2 M1_M2
3 M11_M12
4 Name包含表Jumper2中WkingNetName全部的结果,插入表WkingNetName之前去除重复的name
Insert into wkingnetname(name) select distinct wkingnetname from jumper2 ; 4.新的工作网络连接关系表WkingNetConectionRelation
ID WkingNetID WkingPinID
1 1 30
2 1 14
3 2 1
4 2 2
5 3 11
6 3 12WkingPinID包含表jumper2中的FromPin和ToPin的所有内容,插入表之前去除重复的WkingPinID
Insert into WkingNetConectionRelation (WkingPinID) Select distinct frompin from jumper2 union select distinct topin from jumper2;WkingNetID:由WkingPinID找到表jumper2中的FromPin和ToPin,再找到对应的WkingNetName,在对应表wkingnetname中的Name找到对应的ID。
Insert into WkingNetConectionRelation (WkingNetID) Select id from wkingnetname where name=(select wkingnetname from jumper2 where WkingNetConectionRelation.wkingpinid=frompin or WkingNetConectionRelation.wkingpinid=topin);以上是只是我的想法,前面的三个表已经实现了,第四个的不对,要把两字段数据一起插入,问这个表WkingNetConectionRelation的数据怎么一起插入呢?求各位大侠指导,不胜感激!

解决方案 »

  1.   

    Insert into WkingNetConectionRelation (ID,WkingNetID,WkingPinID) 
    select row_number() over (order by ID),ID,N1 from 
    (select ID,Substring(Name,charindex('_M',Name)+2,len(Name)-1) N1 from WkingNetName
    union all
    select ID,Substring(Name,charindex('M',Name)+1,charindex('_M',Name)-charindex('M',Name)-1) N1 from WkingNetName) A
      

  2.   

    Insert into WkingNetConectionRelation (ID,WkingNetID,WkingPinID) 
    select row_number() over (order by ID),ID,TT from 
    (select ID,FromPin TT from jumper2
    union all
    select ID,ToPin TT from jumper2) A两种方法随便挑
      

  3.   

    QIU176161650你好,谢谢你的耐心回答!
    我才开始学sql语句 很多不太懂,就是你回复的代码里的“TT”,还有“A”是什么意思啊?
    谢谢指导!
      

  4.   


    代码里的“TT”,还有“A”是什么意思啊?
      

  5.   


    刚刚说错了 是这段代码里的“TT”,还有“A”是什么意思啊?
      

  6.   


    刚刚说错了 是这段代码里的“TT”,还有“A”是什么意思啊?这样写你应该就清楚了吧!
    select row_number() over (order by ID),ID,TT from 
    (select ID,FromPin as TT from jumper2
    union all
    select ID,ToPin as TT from jumper2) as A
      

  7.   


    刚刚说错了 是这段代码里的“TT”,还有“A”是什么意思啊?这样写你应该就清楚了吧!
    select row_number() over (order by ID),ID,TT from 
    (select ID,FromPin as TT from jumper2
    union all
    select ID,ToPin as TT from jumper2) as A谢谢你哈 我看懂了 但是我运行了一下 有个错误:
    near "(": syntax error
    你可以再帮我看看吗,我才学都不会,麻烦你了
      

  8.   


    刚刚说错了 是这段代码里的“TT”,还有“A”是什么意思啊?这样写你应该就清楚了吧!
    select row_number() over (order by ID),ID,TT from 
    (select ID,FromPin as TT from jumper2
    union all
    select ID,ToPin as TT from jumper2) as A谢谢你哈 我看懂了 但是我运行了一下 有个错误:
    near "(": syntax error
    你可以再帮我看看吗,我才学都不会,麻烦你了你数据库是什么版本的?
      

  9.   

    其实他这个TT就是一个别名,就给FromPin和ToPin定义了一个别名,通常是为了更加方便的识别字段而已,没有什么特殊意思的,A也是,将 AS A之前的查询结果看过一个表,然后给这个表命名叫A,当然也只是一个虚拟的而已,至于你的报错,你把后面AS A的那个AS去掉试试,应该就可以了
      

  10.   

    谢谢hunterII的指教!我明白了这个是别名,但是我按照你说的把AS去掉还是有那个错误,可不可以麻烦你再帮我看看,谢谢了!
      

  11.   


    刚刚说错了 是这段代码里的“TT”,还有“A”是什么意思啊?这样写你应该就清楚了吧!
    select row_number() over (order by ID),ID,TT from 
    (select ID,FromPin as TT from jumper2
    union all
    select ID,ToPin as TT from jumper2) as A谢谢你哈 我看懂了 但是我运行了一下 有个错误:
    near "(": syntax error
    你可以再帮我看看吗,我才学都不会,麻烦你了你数据库是什么版本的?
    sqlite 3.7.14.1又遇到新问题了,可以帮我看看么,谢谢啦!