|
|
|
Как преобразовать столбец в строку?
|
|||
|---|---|---|---|
|
#18+
Подскажите, пожалуйста!!! Допустим, имеется запрос, который состоит всего из одного столбца , а количество записей >1. Как можно привести все эти записи к одной строке (строковой переменной), с пробелами, в качестве разделителей. Данные типа varchar. Пусть SELECT-запрос выдает таблицу: aaa bbb ccc ddd Из нее необходимо получить строку: "aaa bbb ccc ddd" (естественно, без кавычек) Мне кажется, что уместным было бы использование хранимых процедур совместно с курсорами... Но мои познания IB не настолько хороши, чтобы решить эту задачку самостоятельно. Поэтому я прошу помощи!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2003, 04:02 |
|
||
|
Как преобразовать столбец в строку?
|
|||
|---|---|---|---|
|
#18+
а зачем? это не праздный вопрос. мне кажется что задачу, которую ты хочешь решить таким образом, можно решить более простым и эффективным способом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2003, 06:08 |
|
||
|
Как преобразовать столбец в строку?
|
|||
|---|---|---|---|
|
#18+
Попробуй так create procedure Proc returns (s varchar(300)) as declare variable a varchar(50); begin s = ''; for select a from t into :a do begin s = s||' '||a; end suspend; end ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2003, 10:55 |
|
||
|
Как преобразовать столбец в строку?
|
|||
|---|---|---|---|
|
#18+
2alex_k: Хочу, чтобы для каждой записи из первой таблицы связки многие-ко-многим, у пользователя отображалось одной строкой, а не несколькими. Другими словами, например имеем: Саша <-> Люда Саша <-> Вера Паша <-> Наташа Паша <-> Вера Алекс <-> Люда Алекс <-> Наташа Алекс <-> Вера (это связи между записями первой и второй таблиц) Хочу, чтобы пользователь видел примерно так: Саша, Люда Вера Паша, Наташа Вера Алекс, Люда Наташа Вера (запятая разделяет поля) 2vovan1: Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2003, 01:45 |
|
||
|
Как преобразовать столбец в строку?
|
|||
|---|---|---|---|
|
#18+
2vovan1: А как я могу вставить вызов этой процедуры в select-запрос? (зачем - см. выше) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2003, 02:17 |
|
||
|
Как преобразовать столбец в строку?
|
|||
|---|---|---|---|
|
#18+
это _не то что тебе нужно_ тебе нужно, чтобы твой селект возвращал набор данных с произвольным количеством столбцов. я правильно тебя понял? то что посоветовал Вован, поможет тебе на половину, но другого полного решения нет. select * from proc выдаст тебе один столбец. а на клиенте ты должен его сам распарсить по пробелам и отобразить на экране как несколько столбцов. при этом если в имени будет пробел, возникнет глюк с лишним столбцом :-) если ты точно уверен, что у тебя будет _не больше_ 20(например) столбцов при любом раскладе, то написать хранимку, которая будет возвращать двать полей с данными и одно поле с количеством действительных полей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2003, 05:38 |
|
||
|
Как преобразовать столбец в строку?
|
|||
|---|---|---|---|
|
#18+
То, что мне нужно: Допустим имеется ТРИ таблицы такого содержания: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Смысл примера я думаю понятен всем, объяснять не надо :-) Я хочу получить информацию о связях SELECT FIRST_NAME, SECOND_NAME FROM..... но именно чтобы в ТАКОМ виде: Код: plaintext 1. 2. 3. Результат состоит из ДВУХ столбцов. В правом столбце ВСЯ необходимая информация собирается через символ пробела. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2003, 19:07 |
|
||
|
Как преобразовать столбец в строку?
|
|||
|---|---|---|---|
|
#18+
2vovan1: Я наверное ужасный тормоз, но у меня выскакивает ошибка: The cursor identified in the update or delete statement is not positioned on a row. no current record for fetch operation. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2003, 19:17 |
|
||
|
Как преобразовать столбец в строку?
|
|||
|---|---|---|---|
|
#18+
Либо я что-то не понял либо: 1. Связь многие ко многим есть неправильность при нормализации ER-диаграммы до 3 НФ. 2. Ессно этого надо избежать (стандартно припомощи вспомогательной таблицы) 3. Вот когда ты так сделаешь то без труда получишь любые выборки какие хочешь при помощи простого SELECT'а... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2003, 14:17 |
|
||
|
Как преобразовать столбец в строку?
|
|||
|---|---|---|---|
|
#18+
1 и 2 . Связь многие-ко-многим реализована посредством таблицы LINKFIRSTSECOND. 3 . Если использовать запрос Код: plaintext 1. 2. 3. 4. то получится столько строк, сколько существует связок. Мне же необходимо "сгруппировать" результат запроса особым образом ( см. постинг выше ), чтобы каждая строка отражала ОДНУ запись из таблицы FIRST, а все связные значения из таблицы SECOND писались во втором столбце запроса, разделенные пробелом (сколько бы их ни было!). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2003, 15:34 |
|
||
|
Как преобразовать столбец в строку?
|
|||
|---|---|---|---|
|
#18+
Как можно это сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2003, 16:19 |
|
||
|
Как преобразовать столбец в строку?
|
|||
|---|---|---|---|
|
#18+
Вот так - при помощи Хранимой процедуры: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2003, 16:46 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32228076&tid=1580153]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
167ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 475ms |

| 0 / 0 |
