powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Еще запросец....
3 сообщений из 3, страница 1 из 1
Еще запросец....
    #34300347
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть 2 таблицы:
table1(id bigint), поле id - ключ.
и table2(record_id bigint, type_id bigint, value varchar(100)), причем table2.record_id есть ссылка на table1.id.... Есть ключ у таблицы table2 (record_id, type_id).....
Мне нужно сделать:

select t1.id as st1, Coalesce(t2.value,'') as st2,Coalesce(t3.value,'') as st3
from table1 as t1 left outer join table2 as t2 on t1.id = t2.record_id and t2.type_id = 1
left outer join table2 as t3 on t1.id = t3.record_id and t3.type_id = 2

Подскажите, можно ли как-нибудь оптимизировать?

Пример:
table1
id
1
2
3

table2
record_id type_id value
1 2 'A'
1 1 'B'
3 1 'A'
1 4 'C'


Результат:
st1 st2 st3
1 'B' 'A'
2 '' ''
3 'A' ''
...
Рейтинг: 0 / 0
Еще запросец....
    #34300767
Бабичев Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CASE + GROUP BY тебе в помощь.
...
Рейтинг: 0 / 0
Еще запросец....
    #34300773
Бабичев Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бабичев СергейCASE + GROUP BY тебе в помощь.Как вариант, на твоих тестовых данных:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
select t1.id,
       max(case 
             when t2.type_id =  1 
               then t2.value
             else ''
           end) val_type_1,
       max(case 
             when t2.type_id =  2 
               then t2.value
             else ''
           end) val_type_2,
       max(case 
             when t2.type_id =  3 
               then t2.value
             else ''
           end) val_type_3,
       max(case 
             when t2.type_id =  4 
               then t2.value
             else ''
           end) val_type_4
  from table1 t1
  left outer join 
       table2 t2
    on t1.id = t2.record_id 
 group by 
       t1.id

Query finished, retrieving results...

ID   VAL_TYPE_1   VAL_TYPE_2   VAL_TYPE_3   VAL_TYPE_4
--   ----------   ----------   ----------   ----------
  1    B            A                         C
  2 
  3    A

 3  row(s) retrieved
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Еще запросец....
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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