Как добавить предложение on в union? - PullRequest
0 голосов
/ 20 декабря 2018

В настоящее время я успешно объединяю две таблицы и присоединяюсь к третьей.

select col1,col2
from table1

union 

select col1,col2
from table2

join(select distinct(id), date from table3) on table3.id = table2.id

как объединить только table1 и table2, где table1.col3 находится в table2.id?

Другими словами, если есть значение в table1.col3, я хочу получитьвсе данные из table2, где есть совпадение на table2.id и объединить таблицы.

edit:

table1 (source table)      table2                  table3
id  col1  col2             id col1 col2            id date  col4
  1. Я хочу получить все записи из table2
  2. Я хочу получить записи из table1, где есть совпадение между table2.col1 и table1.id
  3. Я хочу получить записи из таблицы table1, где есть совпадение между table3.id и table1.id, где date> = '2018-12-01'

Примечания: table1и table2 точно такие же, почему я пошел с Union.

1 Ответ

0 голосов
/ 20 декабря 2018

Запрошенный UNION на самом деле представляет собой довольно простой запрос, поскольку он может быть построен из 3 отдельных простых запросов из ваших требований;

SELECT col1, col2 FROM table2
 UNION ALL
SELECT col1, col2 FROM table1 WHERE id IN (SELECT col1 FROM table2)
 UNION ALL
SELECT col1, col2 FROM table1 WHERE id IN (SELECT id FROM table3 WHERE date >= '2018-12-01')

Обратите внимание, что UNION ALL допускает дублирование (одна строкаможет отображаться один раз для каждого запроса) при изменении на UNION удаляются все дубликаты.

Пример запуска dbfiddle

...