2015-08-07 4 views
0

Я пытаюсь присоединиться к 4 таблицам. Я хочу, чтобы все данные из таблицы A. Таблица A, B, C связаны столбцом Name. В таблице B, C, D есть столбец идентификатора. Таблица B называет его HostID. Таблицы C и D называют ObjectID. Я создал два соединения для этого ID:SQL Join объединяет два столбца в один

Left Join D on B.HostID = D.ObjectID 
Left Join D on C.ObjectID = D.ObjectID 

Мой запрос содержит столбец для HostID и ObjectID. Как я могу получить только один столбец?

Вот как выглядят данные сейчас. Ценность исходит из пятой таблицы, о которой я не упоминал выше. таблица стоимости связана с НомерУзла или ObjectID

Name - HostID - ObjectID - Value 
Smith - 123 - Null - 7 
Jones - Null - 456 - 3 

Вот что я хочу, чтобы это выглядело как

Name - ObjID - Value 
Smith - 123 - 7 
Jones - 456 - 3 
+1

Возьмите колонку, которую вы не хотите из предложения select. –

+0

для каждой строки один столбец имеет правильные данные, а другой - нуль. – jbw1897

+0

делает ли тот же столбец всегда правильные данные? – psoshmo

ответ

1

Попробуйте что-то вроде этого, чтобы тянуть в зависимости от того значения не равно нулю. Вы можете также использовать concatenate:

Select Name, ISNULL(HostID, ObjectID) as ObjID, Value 

From A 
Left Join B on A.Name = B.Name 
Left Join C on A.Name = C.Name 
Left Join D on ISNULL(B.HostID, C.ObjectID) = D.ObjectID 
Left Join E on D.ObjectID = E.ObjectID 

ISNULL вернется HostID, если HostID не равна нулю, и в этом случае он будет возвращать ObjectID.

+0

Моя общая цель - получить значение. Я получаю только значения для элементов в таблице C. Вот мой Присоединиться: – jbw1897

+0

Моя общая цель - получить значение. Я получаю значения только для элементов в таблице C. Вот мои соединения: от A Left Join B от A.Name = B.name Left Join C on A.name = C.Name Left Join D на C.HostID = D. ObjectID Left Join E на D.ObjectID = E.ObjectID ... Если бы я мог присоединиться к новому ObjID, который вы создали в инструкции select, в D.Object, я думаю, что это сработает. Это возможно? – jbw1897

+0

В вашем соединении вы можете добавить ту же логику 'isnull'. Я отредактирую ответ, чтобы добавить пример. – APH

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