2015-09-01 3 views
0

У меня есть две таблицы, которые связаны друг с другом, Table1 и Table2.Несколько столбцов, соединенных с одним столбцом SQL Server 2008R2

Table1:

ID int IDENTITY Primary Key 
Col1 varchar(15) 

Table2:

ID int IDENTITY Primary Key 
CenterID int 
SatelliteID int 
Category varchar(15) 

Table2.CenterID и Table2.SatelliteID ссылаемся Table1.ID (внешний ключ).

вопрос, я хочу, чтобы получить данные о Table1 с критериями Table2.CenterID, Table2.SatelliteID и Table2.Category.

Как присоединиться к 2 столбцам, которые ссылаются на один и тот же ключ?

Вот мой код

SELECT ta1.* FROM Table1 ta1 
INNER JOIN Table2 ta2a ON ta2a.CenterID = ta1.ID 
INNER JOIN Table2 ta2b ON ta2b.SatelliteID = ta1.ID 
WHERE .... 
+1

что вы сделали до сих пор? – Falaque

+0

ну, я «внутренне соединил» 2 столбца внешнего ключа с использованием псевдонимов, а затем предоставил критерии поиска, используя предложение where (все критерии, которые я упомянул выше, используя оператор И), результат ничего не получил –

+1

, ваш вопрос будет значительно улучшилось, если были данные образца и ожидаемый результат, одни слова слишком расплывчаты –

ответ

1

Вы можете просто присоединиться к Table2 дважды один раз с CenterID и во второй раз с SatelliteID:

Что-то, как это должно работать:

SELECT t1.*, t2a.*, t2b.* FROM Table1 
LEFT JOIN Table2 t2a ON t2a.CenterID = t1.id 
LEFT JOIN Table2 t2b ON t2b.SateliteID = t1.id 
1

вы можете сделайте что-нибудь вроде:

select 
    table2.id, 
    t1.Col1 as Center, 
    t2.Col1 as Satellite, 
    table2.category 
from table2 left join 
table1 t1 
on t1.ID= table2.centerid 
left join table1 t2 
on t1.ID= table2.satelliteid 
--- add where criteria here 
1

Вы должны сделать несколько присоединяется к столу два

SELECT * 
FROM TableB AS b 
INNER JOIN TableA AS a1 ON b.CenterID = a1.Id 
LEFT OUTER JOIN TableA AS a2 ON b.SatelliteID = a2.Id 

Добавить INNER JOIN или LEFT OUTER JOIN это будет по вашему требованию.

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