2013-04-30 163 views
2

我有兩種類型的數據庫等,連接兩個或多個表合併成一個表

DB1:

  • ID
  • 名稱
  • 類型

資格:

  • 標識
  • CandidateId
  • DegreeId
  • 專業化

DB2:

UG_LIST:

  • 名稱

  • ID

PGLIST:

  • 名稱

  • ID

DoctorateList:

  • 名稱

  • ID

這裏表是單一的。所有學位如Ug,Pg,博士學位被存儲在單表中,稱爲Degrees。但在數據庫-2中,每個項目創建爲單獨的表格。所以我必須把這三個表值存儲到資格表中。

我爲此使用了連接。但我無法爲此創建選擇查詢。

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運算符,但它不接受。

有什麼想法?

+0

嘿,能否請您澄清這個問題一點嗎?像標題我應該加入兩個或更多的表格來形成一個字段(是這個字段?)。你想達到什麼目的? – Biswanath 2013-04-30 10:53:39

+0

我編輯我的問題。不,它不是一個領域。它是一張桌子。 – Duk 2013-04-30 11:12:16

回答

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 
+0

它運作良好,感謝很多。 – Duk 2013-04-30 11:14:33

+0

@Duk看看關於連接並編輯我的帖子,如果有必要,我不關心條件... – bummi 2013-04-30 11:17:50

+0

左連接是正確的。你只是正確的方式。 – Duk 2013-04-30 11:19:51