Следующие два запроса:Объединить ОТБОРНОЕ и в UNION ALL
1.
SELECT idA, idB FROM tableA WHERE idA = 1;
2.
SELECT idB, value FROM tableB1 WHERE idB = <the idB result of query 1>
UNION ALL
SELECT idB, value FROM tableB2 WHERE idB = <the idB result of query 1>;
На данный момент я храню результат первого запроса в переменную, а затем выполнить второй запрос отдельно, но я пытаюсь объединить эти два запроса, поэтому мне нужно выполнить только один запрос.
Запрос 1 возвращает точную одну строку, поэтому мы не будем иметь несколько значений idB
. И есть ровно одна запись в tableB1
или tableB2
, которая соответствует этому конкретному значению idB
.
Кажется, я не могу найти способ объединить эти два запроса в один, не имея пространства данных взорваться в одном месте. Например, наивный подход:
SELECT
idA, idB
FROM
tableA a,
LEFT JOIN
(SELECT idB, value FROM tableB1
UNION ALL
SELECT idB, value FROM tableB2) b ON b.idB = a.idB
WHERE idA = 1;
Это означает, что я объединять две полные таблицы, что, очевидно, является излишним.
Извините за все изменения удаления/восстановления, хотя у меня было решение, но оказалось, что это не сработало. –