Предположим, что у меня есть таблица A с полем, которое может быть или 1 или 2...
Как я выбираю таким образом, что для каждой строки в таблице A, если поле равняется 1, присоединяются к выбору с помощью таблицы B и если поле равняется 2, присоединитесь к выбору с помощью таблицы C?
(
SELECT MyField1, MyField2 FROM A
INNER JOIN B ON A.Id = B.Id
AND A.MyField = 1
)
UNION
(
SELECT MyField1, MyField2 FROM A
INNER JOIN C ON A.Id = C.Id
AND A.MyField = 2
)
Что-то вроде этого может работать
DECLARE @TableA TABLE(
ID INT
)
DECLARE @TableB TABLE(
ID INT,
Val VARCHAR(50)
)
DECLARE @TableC TABLE(
ID INT,
Val VARCHAR(50)
)
INSERT INTO @TableA SELECT 1
INSERT INTO @TableA SELECT 2
INSERT INTO @TableB SELECT 1, 'B'
INSERT INTO @TableC SELECT 2, 'C'
SELECT *
FROM @TableA a INNER JOIN
@TableB b ON a.ID = b.ID
AND a.ID = 1
UNION
SELECT *
FROM @TableA a INNER JOIN
@TableC c ON a.ID = c.ID
AND a.ID = 2