SQL umožňuje spojit výsledky více SQL dotazů do jediného sloupce. Nejdříve si vytvoříme tabulky a naplníme je daty.
drop table if exists t_tree; create table t_tree (id bigint, text text); insert into t_tree (id, text) values (1, 'javor'), (2, 'dub'), (3, 'borovice'); drop table if exists t_car; create table t_car (id bigint, text text); insert into t_car (id, text) values (1, 'škoda'), (2, 'nisan'), (3, 'ford'); drop table if exists t_sport; create table t_sport (id bigint, text text); insert into t_sport (id, text) values (1, 'hokej'), (2, 'judo'), (3, 'biatlon');
Spojení výsledků ze tří tabulek:
select * from (select * from t_tree) as un union (select * from t_car) union (select * from t_sport); id text 3 biatlon 3 ford 1 hokej 2 nisan 3 borovice 2 dub 1 škoda 1 javor 2 judo
Spojení do jednoho sloupce:
select * from (select text from t_tree) as un union (select text from t_car) union (select text from t_sport); nisan javor ford biatlon judo dub hokej borovice škoda
Výsledky je možné řadit
select * from (select * from t_tree) as un union (select * from t_car) union (select * from t_sport) order by text; id text 3 biatlon 3 borovice 2 dub 3 ford 1 hokej 1 javor 2 judo 2 nisan 1 škoda
Je možné pojit data z různých sloupců, jen je třeba, aby datové typy sloupců byly kompatibilní. Přidáme další tabulku:
drop table if exists t_1; create table t_1 (id bigint, name varchar(100), content text); insert into t_1 (id, name, content) values (1, 'něco', 'toto je o něčem'), (2, 'něco jiného', 'toto je o něčem jiném'), (3, 'ještě něco jiného', 'a toto o něčem úplně jiném');
Spojíme hodnoty ze sloupce t_tree.text a t_1.name.
select * from (select text from t_tree) as un union (select name from t_1); text něco jiného ještě něco jiného javor dub borovice něco
Můžeme spojovat i sloupce z jedné tabulky.
select * from (select name from t_1) as un union (select content from t_1); name toto je o něčem jiném a toto o něčem úplně jiném něco jiného něco ještě něco jiného toto je o něčem