Выберите из объединения одинаковых столбцов из трех таблиц

У меня есть три таблицы, 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, которая облегчит любой ваш запрос.)

Другие вопросы по тегам