powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Номер записи
35 сообщений из 35, показаны все 2 страниц
Номер записи
    #32169564
bjohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите плиз как получить номер записи в запросе???
Т.е.
Есть набор записей:
RR TT
sdg gfghfg
dfgg fghgfh
dffg gfdgfd

Надо чтобы при запросе(Select) выводилось:
№ RR TT
1 sdg gfghfg
2 dfgg fghgfh
3 dfgg fghgfh
...
Рейтинг: 0 / 0
Номер записи
    #32169571
no name
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
select rownum, ... from ....
...
Рейтинг: 0 / 0
Номер записи
    #32169576
bjohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да чавот лажанулся, спасиб
...
Рейтинг: 0 / 0
Номер записи
    #32169727
bjohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще вопрос. Есть 2 таблицы
1-я:
ID FIO
1 dfdgfdg
2 dfgfhgfh
3 sdllkkjo

2-я:
ID COUR
1 1111
1 2222
2 4444
3 77777
3 11111

Надо получить (select)

ID FIO Choise1 choise2
1 dfdgfdg 1111 2222
2 dfgfhgfh 4444
3 sdllkkjo 77777 11111

Как ни бился получается:

ID FIO Choise1 choise2
1 dfdgfdg 1111
1 dfdgfdg 2222
2 dfgfhgfh 4444
3 sdllkkjo 77777
3 sdllkkjo 11111

Как его сделать
...
Рейтинг: 0 / 0
Номер записи
    #32169730
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скрипт создания таблиц и наполнение данными опубликуй
...
Рейтинг: 0 / 0
Номер записи
    #32169735
bjohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
???
...
Рейтинг: 0 / 0
Номер записи
    #32169747
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CREATE TABLE table1..
insert into...

CREATE TABLE table2...
insert into...

Или ты считаешь это мы должны сами всё за тебя делать? Надо кому?
...
Рейтинг: 0 / 0
Номер записи
    #32169756
raven13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй через cast(multiset ....) см. документацию
...
Рейтинг: 0 / 0
Номер записи
    #32169773
bjohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На кой тебе это надо, если надо использовать временную таблицу так и скажи, смысла с приведении скрипта по созданию заблиц и заполенения их данными я не вижу, но если ты так просишь, то:
Create table table1(id varchar2(5), FIO varchar(50));
Create table table2(id varchar2(5), Choise varchar(10));

Insert into table1('00001','qqqqqqq');
Insert into table1('00002','wwwww');
Insert into table1('00003','eeeeee');

Insert into table2('00001','Choising1');
Insert into table2('00001','Choising2');
Insert into table2('00002','Choising1');
Insert into table2('00003','Choising1');
Insert into table2('00003','Choising2');

Надо получить (select)
ID_|FIO_______|Choise1_____|Choise2
1__|qqqqqqq___|Choising1___|Choising2
2__|wwwww___|Choising1___|
3__|eeeeee____|Choising1___|Choising2

Как ни бился получается:

ID_|FIO_______|Choise1_____|Choise2
1__|qqqqqqq___|Choising1___|
1__|qqqqqqq___|Choising2___|
2__|wwwww___|Choising1___|
3__|eeeeee____|Choising1___|
3__|eeeeee____|Choising2___|
...
Рейтинг: 0 / 0
Номер записи
    #32169778
raven13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2bjohny

Ну еси таким тоном будешь разговаривать, то долго еще будешь думать над задачей.... один.
...
Рейтинг: 0 / 0
Номер записи
    #32169787
bjohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какие мы обидчивые...
...
Рейтинг: 0 / 0
Номер записи
    #32169802
.dba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 bjohny

Скрипт заполнения нужен не для того чтоб проверять его корректность, а для того чтоб другие участники форума могли экспериментировать с вашими данными, а не решать задачу умозрительно.
...
Рейтинг: 0 / 0
Номер записи
    #32169811
Alexandr Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
from table1 1, table2 t21, table2 t22
where
t1.id=t21.id
and
t1.id=t22.id
and
t21.cour>t22.cour

а если три и более полей?
а вообще - вроде это только для Cross_Tab отчетов (неизветсно число колонок) смысл может имеет, а для обработки данных - нет, ибо "зачем в ширину, когда достаточно в глубину", мне так видится
...
Рейтинг: 0 / 0
Номер записи
    #32169814
bjohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОК, извиняюсь(честно честно). Вся проблема в том, что в SQL есть такая штука как join. А в Oracle 8i join нет. Подобное слияние реализуется в where, но как это сделать??? Union или как???
...
Рейтинг: 0 / 0
Номер записи
    #32169833
bjohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexandr Plus.
да это выход, но может эсть что-то более гибкое?
...
Рейтинг: 0 / 0
Номер записи
    #32169834
no name
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
круто - В ORACLE 8I НЕТ JOIN :))
...
Рейтинг: 0 / 0
Номер записи
    #32169840
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Более гибкое, это значит если столбцов Choise1 choise2 может быть неограниченное кол-во?
Тогда поиск по сайту по вхождению слов cast или multiset, как было выше сказано.
...
Рейтинг: 0 / 0
Номер записи
    #32169841
bjohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В явном виде я его не увидел...
...
Рейтинг: 0 / 0
Номер записи
    #32169846
no name
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
какой JOIN вас интересует?
...
Рейтинг: 0 / 0
Номер записи
    #32169860
Alexandr Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> в SQL есть такая штука как join. А в Oracle 8i join нет.

Oracle можно сказать папа (и мама) SQL!
еще задолго до join в стандартах в Oracle были (+) !

> может эсть что-то более гибкое?
А зачем практически (если это не страшная тайна) тянуть из вдоль кроме
как ради отчета. А если нужен отчет, то есть генераторы отчетов с шаблонами
для переменного количества полей.
...
Рейтинг: 0 / 0
Номер записи
    #32169864
bjohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например в Access есть join который указывается при выботе из таблиц

select ... from table1 Left Join Table2 on Table1.ID = Table2.ID
group by Table1.ID

Тогда все Ок. Все как надо. В Oracle я попробывал join, но чавот не понял как он работает... Может примерчик приведешь???
...
Рейтинг: 0 / 0
Номер записи
    #32169868
no name
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
select ... from Table1, Table2 where Table1.ID = Table2.ID(+)
...
Рейтинг: 0 / 0
Номер записи
    #32169879
bjohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасиб но не то
...
Рейтинг: 0 / 0
Номер записи
    #32169883
no name
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Спасиб но не то
(+) не join?
...
Рейтинг: 0 / 0
Номер записи
    #32169885
bjohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НЕ такой результат от него, как хотелось бы :(
...
Рейтинг: 0 / 0
Номер записи
    #32169940
dasistgut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа, всё это не то. Join здесь ни причём. Это действительно интересный вопрос - как сделать запрос, возвращающий переменное число ПОЛЕЙ в зависимости от существования данных. Т.е., например, если на Складе1 есть Товар1 и Товар2, на Складе2 Товара1 нет, но есть Товар2, то запрос должен вернуть должен вернуть
Name Склад1 Склад2
Товар1 20
Товар2 10 30
Если существуют ещё склады, на которых ничего нет, то они и не выводятся в качестве полей.
Например, в Access это делается элементарно - там есть конструкция
TRANSFORM...
Select...
PIVOT...
А в навороченном Oracle, похоже нет такой возможности.
Или есть?
...
Рейтинг: 0 / 0
Номер записи
    #32169945
bjohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дамс задачка интересная!
...
Рейтинг: 0 / 0
Номер записи
    #32169969
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сказали же вам уже много раз ищите на этом форуме по ключевым словам cast или multiset.

P.S. До чего же народ упрямый и невнимательный.
...
Рейтинг: 0 / 0
Номер записи
    #32169978
no name
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SoftBuilder, Точно.
...
Рейтинг: 0 / 0
Номер записи
    #32169989
bjohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, нашли уже :)
...
Рейтинг: 0 / 0
Номер записи
    #32169992
no name
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
упс. забыл :))
...
Рейтинг: 0 / 0
Номер записи
    #32170081
raven13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну если multiset не устраивает (действительно не панацея), то подобный запрос можно сбацать через процедуру, которая возвращает тип table of <запись>.
Сразу скажу что без днамического SQL здесь не обойтись.

Поэтому если вам нужен только отчет и не нужен дополнительный гимор, то получайте его сторонними продуктами (возьмите тот же Excel, Developer). Никаких Pivot в Oracle нет.

2softbuilder@inbox.ru
Походу дела нужен сводный отчет, только почему то товарищ умалчивает об этом и приводит всякие join чтобы сбить народ с толку.

2bjohny
Вы хоть сами определились что вам надо? Суда по вашим постам - прогнило что-то в Датском Королевстве
...
Рейтинг: 0 / 0
Номер записи
    #32170082
dasistgut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bjohny,
киньте ссылку на то, что Вы нашли.
...
Рейтинг: 0 / 0
Номер записи
    #32170127
Al'Exander
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Статический запрос с динамическим количеством столбцов в Оракл сделать нельзя. И вообще я такого не видел. Потому что не нужно.

Варианты решения:
1. Если нужно просто получить инфу в таком виде -- пишем функцию, в которую будет передаваться ID, и которая будет возвращать строку с нужными разделителями (таб, пробел...)

Запрос:
SELECT T1.ID, T1.FIO, GetCourList( T1.ID )
FROM Table1 T1;

Функция:
create or replace function GetCourList( pID in Integer ) return String as
cursor c1 is select * from Table2 where ID = pID;
sResult String(32767);
begin
for x in c1 loop
sResult := sResult || ' ' || x.COUR;
end loop;
return SubStr(sResult,2);
end;

2. Запрос выполняется в том виде, в котором он получается естественным путем, а уже клиентское приложение разносит данные по нужным столбцам и динамически их создает. Для этого нужно написать свой компонент.
...
Рейтинг: 0 / 0
Номер записи
    #32170261
LG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
35 сообщений из 35, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Номер записи
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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