Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Результат SQL в одну строку / 8 сообщений из 8, страница 1 из 1
18.10.2013, 15:06
    #38432963
Rust()
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат SQL в одну строку
Есть 2 связанные таблицы (по полю ID_VAR )
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TABLE DB2ADMIN.ATTRIBUTES (
		ID BIGINT NOT NULL ,
		ID_VAR BIGINT NOT NULL,
                ID_PROCESS BIGINT NOT NULL,
		VALUE_VAR VARCHAR(1024))

CREATE TABLE DB2ADMIN.VARIABLES (
		ID_VAR BIGINT NOT NULL ,
		NAME_VAR VARCHAR(128)



со значениями
ATTRIBUTES
IDID_VARID_PROCESSVALUE_VAR 111'qqq'221'www'341'eee'412'rrr'522'ttt'632'yyy'742'yyy'

VARIABLES
ID_VAR NAME_VAR 1'синий'2'красный'3'голубой'4'желтый'5'зеленый'

Как выполнить запрос, чтобы результатом была, например такая таблица для ID_PROCESS=1
NAME_VAR1 VALUE_VAR1 NAME_VAR2 VALUE_VAR2'синий''qqq''красный''www'
...
Рейтинг: 0 / 0
18.10.2013, 15:58
    #38433071
Rust()
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат SQL в одну строку
Придумал такое решение, но не уверен в его оптимальности:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
with t as (
SELECT v.name_var as q1, a.value_var as q2, a.id_process as pr
FROM DB2ADMIN.variables v
join db2admin.attributes a on (a.id_var=v.id_var)
where v.name_var='синий' 
) 
select t.q1 as NAME_VAR1, t.q2 as VALUE_VAR1,v.name_var as NAME_VAR2, a.value_var as NAME_VAR2 from t,DB2ADMIN.variables v
join db2admin.attributes a on (a.id_var=v.id_var)
where v.name_var='красный' and a.id_process=1 and t.pr=1
...
Рейтинг: 0 / 0
18.10.2013, 16:24
    #38433120
Rust()
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат SQL в одну строку
Но остается вопрос ка, например, получить такой результат:
NAME_VAR1 VALUE_VAR1NAME_VAR2 VALUE_VAR2NAME_VAR3 VALUE_VAR3'синий''qqq''красный''www''желтый''eee'
...
Рейтинг: 0 / 0
18.10.2013, 17:14
    #38433250
Was ist das?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат SQL в одну строку
Rust(),

"Результат SQL в одну строку" - если только в столбец типа "строка" где все значения будут конкотенированны через разделитель.
Если в результирующий набор с заранее неизвестным количеством столбцов - то ХП с динамически формируемым ddl.

p.s. в какой реляционной субд такое (универсальный sql-statement с заранее неопределенным количеством столбцов в результирующем наборе) вообще возможно ?
...
Рейтинг: 0 / 0
21.10.2013, 08:28
    #38435007
Rust()
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат SQL в одну строку
Число столбцов известно - 3
...
Рейтинг: 0 / 0
21.10.2013, 08:30
    #38435008
Rust()
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат SQL в одну строку
Rust()Число столбцов известно - 3
то есть 3 пары
...
Рейтинг: 0 / 0
21.10.2013, 13:12
    #38435395
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат SQL в одну строку
Rust(),

А для PROCESS_ID=2 что, пар должно быть 4?
...
Рейтинг: 0 / 0
21.10.2013, 14:15
    #38435531
Rust()
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат SQL в одну строку
Mark Barinstein,
нет, то же 3 )

Задачу уже решил вот так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
with t as (
SELECT v.name_var as name_var1, a.value_var as value_var1, a.id_process as pr
FROM DB2ADMIN.variables v
join db2admin.attributes a on (a.id_var=v.id_var)
where v.name_var='синий' 
) ,
 t1 as  (
SELECT t.*, v.name_var as name_var2, a.value_var as value_var2, a.id_process as pr
FROM DB2ADMIN.variables v
join db2admin.attributes a on (a.id_var=v.id_var)
where v.name_var='красный' 
)
 
select t1.*, v.name_var as NAME_VAR3, a.value_var as NAME_VAR3 from t1,DB2ADMIN.variables v
join db2admin.attributes a on (a.id_var=v.id_var)
where v.name_var='желтый' and a.id_process=1 and t.pr=1
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Результат SQL в одну строку / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]