Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Хелп, Хелп ...  [new]
не умеет пользоваться поиском и
Guest
такое осуществимо?:
select t1.field,  (select t2.field1, t2.field2, t2.field3 from table2 t2 where t2.idk= t1.id)
from table1 t1 
хотя :
select t1.field,  
(select  t2.field1 from table2 t2 where t2.idk= t1.id) f1,
(select  t2.field2 from table2 t2 where t2.idk= t1.id) f2,
(select  t2.field3 from table2 t2 where t2.idk= t1.id  and field5 = 'aaaaa') f3
from table1 t1 
на скорость выполнения запроса не влияет - да и план запроса не отличается
18 мар 10, 20:46    [8500753]     Ответить | Цитировать Сообщить модератору
 Re: Хелп, Хелп ...  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8131
не умеет пользоваться поиском и
такое осуществимо?
Нет. В списке выборки допустимы только Scalar Subquery Expressions
18 мар 10, 20:56    [8500791]     Ответить | Цитировать Сообщить модератору
 Re: Хелп, Хелп ...  [new]
-2-
Member

Откуда:
Сообщений: 15330
не умеет пользоваться поиском и ,

Если не рассчитываете на exact fetch return too many rows, то через left join. Иначе через создание объектного типа.
18 мар 10, 20:57    [8500799]     Ответить | Цитировать Сообщить модератору
 Re: Хелп, Хелп ...  [new]
не умеет пользоваться поиском и
Guest
SQL*Plus
спасибо - )))
хорошего всем времени суток ...
18 мар 10, 20:58    [8500800]     Ответить | Цитировать Сообщить модератору
 Re: Хелп, Хелп ...  [new]
не умеет пользоваться поиском и
Guest
-2-
подзапросы с группировкой, да и верхнийзапрос также с группировкой ...
Время выполнение вполне приемлимое 0,2 сек... против 6 сек запроса ( все данные аналогичны) вида
select *
from table1, (select * from table2 ) t2
where t1.id=t2.idk(+)
group by... 

Получаемые данные идентичны, используемые таблицы также идентичны ...
Кому интересно, могу привести полные запросы с планами выполнения ...
18 мар 10, 21:03    [8500820]     Ответить | Цитировать Сообщить модератору
 Re: Хелп, Хелп ...  [new]
__vvp_
Member

Откуда: Санкт-Петербург
Сообщений: 1158
не умеет пользоваться поиском и
такое осуществимо?:
select t1.field,  (select t2.field1, t2.field2, t2.field3 from table2 t2 where t2.idk= t1.id)
from table1 t1 


Можно так:

select field, substr(fields, 1, 10), ...
from (
select t1.field,  (select lpad(t2.field1, 10) || t2.field2 || t2.field3 from table2 t2 where t2.idk= t1.id) fields
from table1 t1) 

Естественно зафиксировав длины полей подходящим способом (lpad, например).
18 мар 10, 23:12    [8501172]     Ответить | Цитировать Сообщить модератору
 Re: Хелп, Хелп ...  [new]
__vvp_
Member

Откуда: Санкт-Петербург
Сообщений: 1158
не умеет пользоваться поиском и ,

Еще вариант

create type tt as object 
(field1 number,
 field2 varchar2(10),
 field3 date);

select field,
       treat(fields as tt).field1 field1,
       treat(fields as tt).field2 field2,
       treat(fields as tt).field3 field3
from (
      select 'aa' field, (select tt(1, 'строка', sysdate)
                            from dual) fields
        from dual);
18 мар 10, 23:22    [8501194]     Ответить | Цитировать Сообщить модератору
 Re: Хелп, Хелп ...  [new]
aZm
Member

Откуда: 3й рим
Сообщений: 2355
если уж извращаться, то без обьектных типов :) они слишком уж извратны в оракле.

select t1.field,  cursor(select t2.field1, t2.field2, t2.field3 from table2 t2 where t2.idk= t1.id)
from table1 t1 

---
Ceterum censeo NATO esse delendam!
19 мар 10, 09:52    [8501907]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить