2

我有两种类型的数据库,例如,

数据库1:

度数

  • ID
  • 姓名
  • 类型

资格:

  • ID
  • 候选人 ID
  • 学位编号
  • 专业化

DB2:

UG_LIST:

  • 姓名

  • ID

节目单:

  • 姓名

  • ID

博士名单:

  • 姓名

  • ID

这里的表是单一的。所有学位,如 Ug、Pg、博士学位都存储在名为Degrees的单个表中。但在数据库 -2 中,每个项目都创建为单独的表。所以我必须将这三个表值存储到Qualifications表中。

我为此使用了连接。但我无法为此创建选择查询。

SELECT top(50) 'INSERT INTO CandidateQualifications(candidateId,DegreeId,specialization) VALUES('+

     Cast(c.CandidateID as varchar(50))+',''' +
    Isnull(Cast(u.Id as varchar(50)),'NULL') Or cast(p.Id as varchar(50)) or cast(d.Id as varchar(50))+','+
    IsNull(''''+c.ugspecification+'''', 'NULL')+')'
  FROM  candidatedetails as c 
  right join UG_List As u ON c.qualification=u.UGName
  right join PG_List As p ON c.qualification=u.pgname
  right join Docorate_List As d ON c.qualification=u.docorate

请告诉如何做到这一点?我使用 Or 运算符,但它不接受。

任何的想法?

4

1 回答 1

2

代替:

Isnull(Cast(u.Id as varchar(50)),'NULL') Or cast(p.Id as varchar(50)) or cast(d.Id as varchar(50))

和:

Cast(Coalesce(u.Id,p.Id,d.Id)as varchar(50))

我希望加入是left

SELECT top(50) 'INSERT INTO CandidateQualifications(candidateId,DegreeId,specialization) VALUES('+

     Cast(c.CandidateID as varchar(50))+',''' +
     Cast(Coalesce(u.Id,p.Id,d.Id)as varchar(50))+','+
     IsNull(''''+c.ugspecification+'''', 'NULL')+')'
  FROM  candidatedetails as c 
  LEFT join UG_List As u ON c.qualification=u.UGName
  LEFT join PG_List As p ON c.qualification=p.pgname
  LEFT join Docorate_List As d ON c.qualification=d.docorate
于 2013-04-30T10:59:28.027 回答