|
|
|
Номер записи
|
|||
|---|---|---|---|
|
#18+
Подскажите плиз как получить номер записи в запросе??? Т.е. Есть набор записей: RR TT sdg gfghfg dfgg fghgfh dffg gfdgfd Надо чтобы при запросе(Select) выводилось: № RR TT 1 sdg gfghfg 2 dfgg fghgfh 3 dfgg fghgfh ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2003, 13:48:43 |
|
||
|
Номер записи
|
|||
|---|---|---|---|
|
#18+
select rownum, ... from .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2003, 13:51:23 |
|
||
|
Номер записи
|
|||
|---|---|---|---|
|
#18+
Да чавот лажанулся, спасиб ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2003, 13:53:48 |
|
||
|
Номер записи
|
|||
|---|---|---|---|
|
#18+
И еще вопрос. Есть 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 Как его сделать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2003, 15:20:58 |
|
||
|
Номер записи
|
|||
|---|---|---|---|
|
#18+
Скрипт создания таблиц и наполнение данными опубликуй ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2003, 15:22:51 |
|
||
|
Номер записи
|
|||
|---|---|---|---|
|
#18+
CREATE TABLE table1.. insert into... CREATE TABLE table2... insert into... Или ты считаешь это мы должны сами всё за тебя делать? Надо кому? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2003, 15:31:13 |
|
||
|
Номер записи
|
|||
|---|---|---|---|
|
#18+
Попробуй через cast(multiset ....) см. документацию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2003, 15:35:53 |
|
||
|
Номер записи
|
|||
|---|---|---|---|
|
#18+
На кой тебе это надо, если надо использовать временную таблицу так и скажи, смысла с приведении скрипта по созданию заблиц и заполенения их данными я не вижу, но если ты так просишь, то: 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___| ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2003, 15:42:28 |
|
||
|
Номер записи
|
|||
|---|---|---|---|
|
#18+
2bjohny Ну еси таким тоном будешь разговаривать, то долго еще будешь думать над задачей.... один. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2003, 15:44:08 |
|
||
|
Номер записи
|
|||
|---|---|---|---|
|
#18+
Какие мы обидчивые... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2003, 15:49:21 |
|
||
|
Номер записи
|
|||
|---|---|---|---|
|
#18+
2 bjohny Скрипт заполнения нужен не для того чтоб проверять его корректность, а для того чтоб другие участники форума могли экспериментировать с вашими данными, а не решать задачу умозрительно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2003, 15:57:58 |
|
||
|
Номер записи
|
|||
|---|---|---|---|
|
#18+
... from table1 1, table2 t21, table2 t22 where t1.id=t21.id and t1.id=t22.id and t21.cour>t22.cour а если три и более полей? а вообще - вроде это только для Cross_Tab отчетов (неизветсно число колонок) смысл может имеет, а для обработки данных - нет, ибо "зачем в ширину, когда достаточно в глубину", мне так видится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2003, 16:00:20 |
|
||
|
Номер записи
|
|||
|---|---|---|---|
|
#18+
ОК, извиняюсь(честно честно). Вся проблема в том, что в SQL есть такая штука как join. А в Oracle 8i join нет. Подобное слияние реализуется в where, но как это сделать??? Union или как??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2003, 16:01:13 |
|
||
|
Номер записи
|
|||
|---|---|---|---|
|
#18+
Alexandr Plus. да это выход, но может эсть что-то более гибкое? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2003, 16:07:24 |
|
||
|
Номер записи
|
|||
|---|---|---|---|
|
#18+
круто - В ORACLE 8I НЕТ JOIN :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2003, 16:08:19 |
|
||
|
Номер записи
|
|||
|---|---|---|---|
|
#18+
Более гибкое, это значит если столбцов Choise1 choise2 может быть неограниченное кол-во? Тогда поиск по сайту по вхождению слов cast или multiset, как было выше сказано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2003, 16:12:38 |
|
||
|
Номер записи
|
|||
|---|---|---|---|
|
#18+
В явном виде я его не увидел... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2003, 16:13:22 |
|
||
|
Номер записи
|
|||
|---|---|---|---|
|
#18+
какой JOIN вас интересует? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2003, 16:15:38 |
|
||
|
Номер записи
|
|||
|---|---|---|---|
|
#18+
> в SQL есть такая штука как join. А в Oracle 8i join нет. Oracle можно сказать папа (и мама) SQL! еще задолго до join в стандартах в Oracle были (+) ! > может эсть что-то более гибкое? А зачем практически (если это не страшная тайна) тянуть из вдоль кроме как ради отчета. А если нужен отчет, то есть генераторы отчетов с шаблонами для переменного количества полей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2003, 16:19:33 |
|
||
|
Номер записи
|
|||
|---|---|---|---|
|
#18+
Например в Access есть join который указывается при выботе из таблиц select ... from table1 Left Join Table2 on Table1.ID = Table2.ID group by Table1.ID Тогда все Ок. Все как надо. В Oracle я попробывал join, но чавот не понял как он работает... Может примерчик приведешь??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2003, 16:22:10 |
|
||
|
Номер записи
|
|||
|---|---|---|---|
|
#18+
select ... from Table1, Table2 where Table1.ID = Table2.ID(+) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2003, 16:25:06 |
|
||
|
Номер записи
|
|||
|---|---|---|---|
|
#18+
> Спасиб но не то (+) не join? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2003, 16:34:29 |
|
||
|
Номер записи
|
|||
|---|---|---|---|
|
#18+
НЕ такой результат от него, как хотелось бы :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2003, 16:35:24 |
|
||
|
Номер записи
|
|||
|---|---|---|---|
|
#18+
Господа, всё это не то. Join здесь ни причём. Это действительно интересный вопрос - как сделать запрос, возвращающий переменное число ПОЛЕЙ в зависимости от существования данных. Т.е., например, если на Складе1 есть Товар1 и Товар2, на Складе2 Товара1 нет, но есть Товар2, то запрос должен вернуть должен вернуть Name Склад1 Склад2 Товар1 20 Товар2 10 30 Если существуют ещё склады, на которых ничего нет, то они и не выводятся в качестве полей. Например, в Access это делается элементарно - там есть конструкция TRANSFORM... Select... PIVOT... А в навороченном Oracle, похоже нет такой возможности. Или есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2003, 17:11:30 |
|
||
|
Номер записи
|
|||
|---|---|---|---|
|
#18+
Дамс задачка интересная! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2003, 17:15:40 |
|
||
|
Номер записи
|
|||
|---|---|---|---|
|
#18+
Сказали же вам уже много раз ищите на этом форуме по ключевым словам cast или multiset. P.S. До чего же народ упрямый и невнимательный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2003, 17:35:29 |
|
||
|
Номер записи
|
|||
|---|---|---|---|
|
#18+
SoftBuilder, Точно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2003, 17:39:19 |
|
||
|
Номер записи
|
|||
|---|---|---|---|
|
#18+
Ну если multiset не устраивает (действительно не панацея), то подобный запрос можно сбацать через процедуру, которая возвращает тип table of <запись>. Сразу скажу что без днамического SQL здесь не обойтись. Поэтому если вам нужен только отчет и не нужен дополнительный гимор, то получайте его сторонними продуктами (возьмите тот же Excel, Developer). Никаких Pivot в Oracle нет. 2softbuilder@inbox.ru Походу дела нужен сводный отчет, только почему то товарищ умалчивает об этом и приводит всякие join чтобы сбить народ с толку. 2bjohny Вы хоть сами определились что вам надо? Суда по вашим постам - прогнило что-то в Датском Королевстве ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2003, 18:42:54 |
|
||
|
Номер записи
|
|||
|---|---|---|---|
|
#18+
bjohny, киньте ссылку на то, что Вы нашли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2003, 18:43:06 |
|
||
|
Номер записи
|
|||
|---|---|---|---|
|
#18+
Статический запрос с динамическим количеством столбцов в Оракл сделать нельзя. И вообще я такого не видел. Потому что не нужно. Варианты решения: 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. Запрос выполняется в том виде, в котором он получается естественным путем, а уже клиентское приложение разносит данные по нужным столбцам и динамически их создает. Для этого нужно написать свой компонент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2003, 20:21:33 |
|
||
|
|

start [/forum/topic.php?all=1&fid=52&tid=1990321]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
200ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
84ms |
get tp. blocked users: |
2ms |
| others: | 227ms |
| total: | 568ms |

| 0 / 0 |
