Главная страница
    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.063 c
1-1125471887
Антоныч
2005-08-31 11:04
2005.09.25
Запуск видеоролика в отдельном потоке


3-1123671772
andy2015
2005-08-10 15:02
2005.09.25
Кирилица и Interbase


14-1125872684
KilkennyCat
2005-09-05 02:24
2005.09.25
5 сентября. С Днем Рождения!


1-1125858220
Barb
2005-09-04 22:23
2005.09.25
PrintScreen


14-1125685110
hgd
2005-09-02 22:18
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский