SQL - объединение нескольких выборок / таблиц

Мой первый запрос...

SELECT
    t1.a, t1.b, t1.c,
    t2.a, t2.b, t2.c

FROM t1

LEFT JOIN t2 ON t1.a = t2.a

WHERE t1.b = '000000'

AND LENGTH(t1.a) > '5'

AND t1.c <> 'Y';

Мой второй запрос...

SELECT
    t1.a,
    t3.b as testMe

FROM t1

LEFT JOIN t3 ON t1.a = '0' + LEFT(t3.a, 5)

WHERE t1.a = '017941';

Оба эти запроса прекрасно работают сами по себе, но мне нужно, чтобы они были объединены в один набор результатов. Стоит отметить, что where Предложение во втором запросе предназначено для тестирования, но при его удалении происходит сбой. Не уверен, означает ли это, что мне нужно что-то отфильтровать, или время истекло? База данных, которую я использую - это Pervasive.

Мой неудачный запрос...

SELECT
    t1.a, t1.b, t1.c,
    t2.a, t2.b, t2.c,
    t3.b as testMe

FROM t1

LEFT JOIN t2 ON t1.a = t2.a

LEFT JOIN t3 ON t1.a = '0' + LEFT(t3.a, 5)

WHERE t1.b = '000000'

AND LENGTH(t1.a) > '5'

AND t1.c <> 'Y';

Я сократил свой код, чтобы лучше показать, что у меня происходит, но фактический код можно найти здесь: http://codeshare.io/A2aB9

1 ответ

Вы можете попытаться использовать эти два набора в качестве операторов выбора и соединить их вместе. Я вытащил ваше условие соединения между двумя запросами в виде отдельного столбца, чтобы сохранить testMe в наборе результатов.

SELECT  *
FROM    (SELECT t1.a t1_a
              , t1.b t1_b
              , t1.c t1_c
              , t2.a t2_a
              , t2.b t2_b
              , t2.c t2_c
         FROM   t1
         LEFT JOIN t2
                ON t1.a = t2.a
         WHERE  t1.b = '000000'
                AND LENGTH(t1.a) > '5'
                AND t1.c <> 'Y') a
LEFT JOIN (SELECT   t1.a t1_a
                  , t1.b t1_b
                  , t1.c t1_c
                  , t3.a t3_a
                  , t3.b t3_b
                  , '0' + LEFT(t3.c, 5) t3_c
                  , LEFT(t3.c, 5) AS testMe
           FROM     t1
           LEFT JOIN t3
                    ON t1.a = '0' + LEFT(t3.c, 5)) b
        ON a.t1_a = c.t3_c;
Другие вопросы по тегам