powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите написать select
7 сообщений из 7, страница 1 из 1
Помогите написать select
    #39764811
Anitik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Помогите, пожалуйста, написать select по следующим требованиям:
- есть три таблички: клиенты, купленное ими оборудование и обращения клиентов в тех.поддержку.
- в итоге хочется увидеть ответ, состоящий из трех блоков: 1) клиент 2) купленное оборудование 3) обращения в ТП
- при этом количество строк в блоках должно соответствовать реальному, т.е. в первом блоке одна строчка по клиенту, во втором блоке пять строчек по оборудованию, в третьем блоке три строчки с обращениями в тех.поддержку
- допускается создание любого количества вспомогательных таблиц
- версия Oracle 11.2.0.4.0

Пример (подчерки вместо пробелов):

CLNT_ID CLNT_OBOR___ CLNT_RQST
1_______ оборудование 1 обращение 1
________ оборудование 2 обращение 2
________ оборудование 3 обращение 3
________ оборудование 4
________ оборудование 5

Спасибо!
...
Рейтинг: 0 / 0
Помогите написать select
    #39764826
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anitik,

Код: plsql
1.
2.
3.
4.
select к.*,
  cursor(select * from оборудование о where о.клиент=к.клиент) оборудование,
  cursor(select * from обращение о where о.клиент=к.клиент) обращение
from клиент к;
...
Рейтинг: 0 / 0
Помогите написать select
    #39764830
Anitik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-, спасибо большое за совет!

Получилось, но выдается в виде CLNT_ID cursor cursor

А надо бы в явном виде получить все данные (как в примере).
...
Рейтинг: 0 / 0
Помогите написать select
    #39764834
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anitik,

Мессир, обычно начинают с такого: 20962769

покажите что написали сами, сделайте testcase
...
Рейтинг: 0 / 0
Помогите написать select
    #39764850
MazoHist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anitik,
left outer join + lag
...
Рейтинг: 0 / 0
Помогите написать select
    #39764904
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anitik,

вброс
Код: plsql
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.
  1  with cl as (
  2  select 1 client_id from dual union all
  3  select 2 client_id from dual union all
  4  select 3 client_id from dual )
  5  ,obor as (
  6  select 1 client_ref,'Комр' CLNT_OBOR from dual union all
  7  select 1 client_ref,'Монітор' CLNT_OBOR from dual union all
  8  select 2 client_ref,'Мишь' CLNT_OBOR from dual)
  9  ,RQST as (
 10  select 1 client_ref,'О100' CLNT_RQST from dual union all
 11  select 2 client_ref,'О200' CLNT_RQST from dual union all
 12  select 2 client_ref,'О201' CLNT_RQST from dual)
 13  ,u as (
 14  select 'O' f,client_id,CLNT_OBOR x,rownum r from cl,obor where client_ref(+)=client_id
 15  UNION ALL
 16  select 'R' f,client_id,CLNT_RQST x,rownum r from cl,rqst where client_ref(+)=client_id
 17  )
 18  select
 19   lag(cast(null as number),1,client_id)
 20       over (partition by client_id order by nvl(CLNT_OBOR,CLNT_RQST)) cl_id
 21  ,CLNT_OBOR
 22  ,CLNT_RQST
 23  from u
 24  pivot (max(x) for f in ('O' as CLNT_OBOR,'R' as CLNT_RQST))
 25* order by client_id,nvl(CLNT_OBOR,CLNT_RQST)
SQL> /

     CL_ID CLNT_OB CLNT_RQ
---------- ------- -------
         1 Комр    О100
           Монітор
         2 Мишь    О201
                   О200
         3



.....
stax
...
Рейтинг: 0 / 0
Помогите написать select
    #39765015
Anitik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нереальная благодарность всем ответившим, а особенно Stax!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите написать select
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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