Выборка данных из трех таблиц SQL
Подскажите пожалуйста, есть 3 таблицы идентичной структуры
t1 | t2 | t3
barcode barcode | barcode name | barcode name
123 test | 111 test4 | 222 test3
321 test2 | 123 test | 321 test2
У них у всех уникальный баркод, мне надо получить выборку из всех 3 , так чтобы значения не повторялись В результате хочу получить
barcode name
123 test
321 test2
111 test4
222 test3
написал такой запрос на объединение двух ( не уверен что правильно).
(SELECT p.barcode, p.name
FROM public.t1 p
LEFT OUTER JOIN public.t2 ps ON ps.barcode = p.barcode
WHERE ps.barcode is NULL)
UNION ALL
(SELECT p.barcode, p.name
FROM public.t1 p
RIGHT OUTER JOIN public.t2 ps ON ps.barcode = p.barcode
WHERE p.barcode is NULL)
Как написать запрос для объединения трех таблиц в выборке
Ответы (1 шт):
операция UNION ALL оставит повторы. используйте обычный UNION. Не ясно как в вашем примере фигурируют 2 таблицы, ибо имена from совпадают.
зы: пока писал ответа автор перелопатил вопрос
SELECT code, name FROM t1
UNION
SELECT code, name FROM t2
UNION
SELECT code, name FROM t3
данный запрос вернет уникальные пары code, name. Если надо получить уникальные code и какой-нибдуь name к ним, то оберните все это в подзапрос и сделайте группировку, например, с min
SELECT code, min(name) as name
FROM (
....
) as t
GROUP BY code
возможно, в таком случаем можно вернуть union all, или по крайней мере проверить вопрос эффективности так и так. Хотя если данных мало, то смысла нет.