Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.09.25;
Скачать: [xml.tar.bz2];

Вниз

Интересная задачка   Найти похожие ветки 

 
Дырчик ©   (2005-08-15 07:02) [0]

есть простой запрос, который возвращает набор записей, можно ли этот набор записей представить в виде одной строки?
например:
 выдает -
   Иванов
   Петров
   Сидоров
 надо -
   Иванов Петров Сидоров
p.s. надо сделать одним запросом, пробую рекурсивным, но что-то не получается


 
Дырчик ©   (2005-08-15 07:21) [1]

Забыл указать - БД Oracle


 
Ильш   (2005-08-15 07:41) [2]

может лучше процедурой?


 
Дырчик ©   (2005-08-15 07:53) [3]

процедурой конечно проще, но как запросом сделать?


 
Думкин ©   (2005-08-15 08:06) [4]

А в чем интерес? Выдается куда и как - на уровне реализации в дельфи?
В днельфи есть реализация выдающая вместо кучи строк - одну.
В чем интерес?


 
evvcom ©   (2005-08-15 08:38) [5]


> процедурой конечно проще, но как запросом сделать?

Есть у меня одна идея, как это сделать одним запросом, только зачем, если можно проще? Объясни тайный смысл сего.


 
alex_***   (2005-08-15 09:22) [6]

курсором пройтись?


 
Anatoly Podgoretsky ©   (2005-08-15 09:24) [7]

Можно конечно, с помощиь множества вложенных запросов и TOP 1, захочешь ли ты писать по одному запросу на каждую запись, это первое.

А второе еще более неприятное для тебя любай база имеет ограничение на длину возвращаемой записи, так что и хранимые процедуры тут не помогут.

И третье, а какая религия запрещает получить набор записей на клиенте и склеить строки уже там без каких либо ограничений?


 
paul_k ©   (2005-08-15 09:45) [8]

просьбюа не пинать.
безразмерных строковых переменных вроде ещё не придумали
В МMSSql можно применить запрос вида
select @perem = @perem + pole from datatable
По идее должен отработать и в Оракле.


 
evvcom ©   (2005-08-15 10:56) [9]


> paul_k ©   (15.08.05 09:45) [8]

Пинать не буду, но сообщу, что Оракл (в отличие от MSSQL) не позволяет в локальной переменной "накапливать" результат. Если запрос возвращает более одной записи, и мы пытаемся это записать в одну переменную, то возникает exception.

> более неприятное для тебя любай база имеет ограничение на
> длину возвращаемой записи

Моя идея реализовать это в одном едином select осуществима, но скорость работы ее будет очень зависеть от количества этих самых записей. Даже если количество будет порядка 10 записей но на таблице всего в несколько сотен записей, такой запрос будет работать довольно долго, тогда как хранимка отработает за доли секунды.
Еще раз вопрос, почему надо именно одним запросом? Чтобы во вьюху запихать или сделать из этого select еще select? Так и с ХП это не проблема.


 
Rule ©   (2005-08-15 10:59) [10]

думаю проце всего на клиенте сделать ... ИМХО, средствами Делфи, ибо действительно безразмерных строк несуществует ... а так можно вайдстрингом оперировать


 
Дырчик ©   (2005-08-15 11:07) [11]

если вас удовлетворит ответ "спортивный интерес", то так оно и есть... просто в свое время на DB2 стояла такая задача, и я таки нашел ред=шение этой проблемы, вот теперь работаю с ораклом и решил выяснить возможности рекурсивных запросов, но что-то не получается - решил посоветоваться


 
paul_k ©   (2005-08-15 11:12) [12]

evvcom ©   (15.08.05 10:56) [9]
MS так же не позволяет присвоить переменной более одной записи. то есть запрос
select @perem =  pole from datatable
вернет ошибку, если в datatable >1 записи.
Если есто доступ к Ораклу, проверь тот вариант, что я указывал выше.


 
evvcom ©   (2005-08-15 11:12) [13]


> возможности рекурсивных запросов

к рекурсивному запросу я бы отнес select с построением дерева. См. connect by.


 
evvcom ©   (2005-08-15 11:18) [14]


> Если есто доступ к Ораклу, проверь тот вариант, что я указывал
> выше.

Угу, проверил:
ORA-01422 exact fetch returns more than requested number of rows
в чем я, собственно, и не сомневался :)


 
paul_k ©   (2005-08-15 11:24) [15]

evvcom ©   (15.08.05 11:18) [14]
Сенькс...



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2005.09.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.041 c
1-1125412713
Андрей Молчанов
2005-08-30 18:38
2005.09.25
DrawAnimatedRects


4-1122815186
Borland
2005-07-31 17:06
2005.09.25
CD_ROM


14-1122216802
Ptr
2005-07-24 18:53
2005.09.25
Ищу работу программиста-стажера на Delphi в Москве


5-1100372543
TSoftman
2004-11-13 22:02
2005.09.25
Как объявлять Item-свойства ....


2-1124359908
Валя
2005-08-18 14:11
2005.09.25
Как сделать поле для записи.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский