Выберите из объединения одинаковых столбцов из трех таблиц
У меня есть три таблицы, A, B и C. Все они содержат разные данные, но имеют несколько общих столбцов.
Если все A, B и C имеют столбцы C1 и C2, то как мне найти конкретное значение C2, используя значение C1, которое может быть в любой из 3 таблиц?
По сути, я хочу сделать простой поиск, но пусть он действует на объединение трех таблиц - и я бы предпочел не использовать представление для достижения этой цели.
Обратите внимание, что это база данных Ingres Vectorwise.
2 ответа
Вы делаете это путем объединения таблиц в from
пункт:
select c2
from ((select c1, c2 from a) union all
(select c1, c2 from b) union all
(select c1, c2 from c)
) t
where c1 = <your value>
Я использовал union all
по причинам производительности. Если вас беспокоит дублирующиеся значения, используйте union
или добавить distinct
в select
,
Это стандартный SQL и должен работать в любой базе данных.
Я не знаю, что вы подразумеваете под "конкретным значением C2, использующим значение C1", но, каким бы ни был ваш запрос для представления, повторите этот запрос и объедините результаты,
SELECT *
FROM A
WHERE C2 = ?
UNION ALL
SELECT *
FROM B
WHERE C2 = ?
UNION ALL
SELECT *
FROM C
WHERE C2 = ?
(Представление - это стандартная функция SQL, которая облегчит любой ваш запрос.)