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;