2013-04-30 2 views
2

У меня есть два типа баз данных, таких как,помощью присоединяется объединить две или более таблиц в одну таблицу

DB1:

Градусы:

  • ID
  • Имя
  • Тип

Квалификация:

  • Id
  • CandidateId
  • DegreeId
  • специализация

DB2:

UG_LIST:

  • Имя

  • ID

PGLIST:

  • Имя

  • ID

DoctorateList:

  • Имя

  • ID

Здесь Градусы стол один. Все градусы, такие как Ug, Pg, doctorate, хранятся в одной таблице с именем Degrees. Но в базе данных -2 каждый элемент создается как отдельные таблицы. Поэтому я должен хранить эти три значения табличных значений в Квалификация таблица.

Я использовал для этого соединения. Но я не могу создать запрос select для этого.

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

+0

Я редактирую свой вопрос. Нет, это не поле. это таблица. – Duk

ответ

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

Он работает good.thanks много. – Duk

+0

@Duk посмотрите на соединения и отредактируйте мой пост, если это необходимо, я не буду об этом знать ... – bummi

+0

Левое соединение верно. Вы верный путь. – Duk

Смежные вопросы