Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 получить таблицу с именем и значением поля  [new]
Fyrklod
Member

Откуда:
Сообщений: 35
Доброе время суток.

попытаюсь сразу изложить задачу

есть выборка

select field1 as f1, field2 as f2, field3, field4
from table
where field1=value1; 

- результат этой выборки - одна строка

есть ли какой-то нормальный способ получения таблицы в виде
----------------
f1 | value1
----------------
f2 | value2
----------------
field3 | value3
----------------
field4 | value4
----------------

Заранее благодарен за помощь!
26 окт 10, 17:14    [9679718]     Ответить | Цитировать Сообщить модератору
 Re: получить таблицу с именем и значением поля  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Fyrklod,

unpivot - в любой его (зависит от версии) реализации
26 окт 10, 17:38    [9679918]     Ответить | Цитировать Сообщить модератору
 Re: получить таблицу с именем и значением поля  [new]
Fyrklod
Member

Откуда:
Сообщений: 35
спасибо.. почитал.. хорошая штука, жаль не для меня :(
я работаю на 8i версии Оракла... а ему рано такие слова знать :(....

есть какие-то другие предложения?
26 окт 10, 17:48    [9679990]     Ответить | Цитировать Сообщить модератору
 Re: получить таблицу с именем и значением поля  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18370
Fyrklod
есть какие-то другие предложения?

Самопальный unpivot в подходящей реализации.
Декартово соединение с табличкой, содержащей нужное количество строк и decode по номеру записи.
26 окт 10, 17:51    [9680010]     Ответить | Цитировать Сообщить модератору
 Re: получить таблицу с именем и значением поля  [new]
Fyrklod
Member

Откуда:
Сообщений: 35
andrey_anonymous, ну коль такой совет, тогда как мне вытащить количество полей в выполненном запросе и имена этих полей?

выполняю
select  f1, f2 from dual 
чтобы дало 2 и f1, f2

выполняю
select  f1, f2, f3 from dual 
чтобы дало 3 и f1, f2, f3
27 окт 10, 11:45    [9683402]     Ответить | Цитировать Сообщить модератору
 Re: получить таблицу с именем и значением поля  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Fyrklod,

количество и имена-типы-длины-.. полей запроса (не выполненного, а любого,лишь бы синтаксически корректного) можно получить из dbms_sql.describe_columns
а дальше - ручками (или сценарием) формируете запрос для_разворота

кстати - даже и (11g)unpivot - сам не развернёт любое количество столбцов в строки.
то есть ему надо (поимённо) указывать те столбцы.
27 окт 10, 15:20    [9685526]     Ответить | Цитировать Сообщить модератору
 Re: получить таблицу с именем и значением поля  [new]
ПЕНСИОНЕРКА
Member

Откуда: Владимирская обл
Сообщений: 4728
Fyrklod,


select "f1" as afield, value1 as avalue from table where field1=value1
union
select "f2" as afield, value2 as avalue from table where field1=value1
union
select "field3" as afield, value3 as avalue from table where field1=value1
union
select "field4" as afield, value4 as avalue from table where field1=value1
27 окт 10, 15:38    [9685771]     Ответить | Цитировать Сообщить модератору
 Re: получить таблицу с именем и значением поля  [new]
bdsm_sql
Member

Откуда:
Сообщений: 948
union all
27 окт 10, 15:42    [9685832]     Ответить | Цитировать Сообщить модератору
 Re: получить таблицу с именем и значением поля  [new]
ПЕНСИОНЕРКА
Member

Откуда: Владимирская обл
Сообщений: 4728
bdsm_sql
union all



автор
- результат этой выборки - одна строка
27 окт 10, 15:46    [9685869]     Ответить | Цитировать Сообщить модератору
 Re: получить таблицу с именем и значением поля  [new]
bdsm_sql
Member

Откуда:
Сообщений: 948
ПЕНСИОНЕРКА
bdsm_sql
union all



автор
- результат этой выборки - одна строка

быстрее будет все равно
27 окт 10, 15:48    [9685888]     Ответить | Цитировать Сообщить модератору
 Re: получить таблицу с именем и значением поля  [new]
Fyrklod
Member

Откуда:
Сообщений: 35
ПЕНСИОНЕРКА
Fyrklod,


select "f1" as afield, value1 as avalue from table where field1=value1
union
select "f2" as afield, value2 as avalue from table where field1=value1
union
select "field3" as afield, value3 as avalue from table where field1=value1
union
select "field4" as afield, value4 as avalue from table where field1=value1



ну как вы думаете, если я заранее знаю все поля и значения и их количество, зачем мне тогда порнография по развороту?

все что я узнавал мне нужно было для разворота любой пусть там 2 поля, пусть 60
16 фев 11, 13:59    [10245055]     Ответить | Цитировать Сообщить модератору
 Re: получить таблицу с именем и значением поля  [new]
Fyrklod
Member

Откуда:
Сообщений: 35
тему забыл закрыть, вот и не отвечал.. очень помог совет

orawish
Fyrklod,
количество и имена-типы-длины-.. полей запроса (не выполненного, а любого,лишь бы синтаксически корректного) можно получить из dbms_sql.describe_columns
а дальше - ручками (или сценарием) формируете запрос для_разворота

кстати - даже и (11g)unpivot - сам не развернёт любое количество столбцов в строки.
то есть ему надо (поимённо) указывать те столбцы.
16 фев 11, 14:00    [10245063]     Ответить | Цитировать Сообщить модератору
 Re: получить таблицу с именем и значением поля  [new]
ПЕНСИОНЕРКА
Member

Откуда: Владимирская обл
Сообщений: 4728
Fyrklod,

автор
ну как вы думаете, если я заранее знаю все поля и значения и их количество, зачем мне тогда порнография по развороту?

все что я узнавал мне нужно было для разворота любой пусть там 2 поля, пусть 6


прописать в модуле запрос для всех прлей кроме счетчика --не сложно
16 фев 11, 14:21    [10245313]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить