Spojení výsledků více SQL dotazů do jednoho sloupce

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

Napsat komentář