Соединение SQL различные таблицы в зависимости от информации о строке

Предположим, что у меня есть таблица A с полем, которое может быть или 1 или 2...

Как я выбираю таким образом, что для каждой строки в таблице A, если поле равняется 1, присоединяются к выбору с помощью таблицы B и если поле равняется 2, присоединитесь к выбору с помощью таблицы C?

6
задан OMG Ponies 13 March 2010 в 23:31
поделиться

2 ответа

(
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
)
8
ответ дан 16 December 2019 в 21:38
поделиться

Что-то вроде этого может работать

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
0
ответ дан 16 December 2019 в 21:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: