Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.10.30;
Скачать: CL | DM;

Вниз

Несколько строк в одну (*.mdb)   Найти похожие ветки 

 
Дмитрий С ©   (2010-02-03 05:18) [0]

Есть таблица:

id    name
1     Алексей
2     Дмитрий
3     Виктор
4     Иван

Нужно составить запрос который, для всей данной таблицы вернет одно значение:
"Алексей/Дмитрий/Виктор/Иван"

Обработать запрос в программе нельзя, т.к. ее исходников нет, изменить можно только сам запрос.


 
Дмитрий С ©   (2010-02-03 06:19) [1]

На ум приходит примерно такой вариант:

SELECT TOP 1 [t1].[name]
+Nz((SELECT TOP 1 "/"+[t2].[name]
 +Nz((SELECT TOP 1 "/"+[t3].[name]
   +Nz((SELECT TOP 1 "/"+[t4].[name]
     +Nz((SELECT TOP 1 "/"+[t5].[name]
       +Nz((SELECT TOP 1 "/"+[t6].[name]
          +Nz((SELECT TOP 1 "/"+[t7].[name]
         FROM [test] AS [t7] WHERE [t7].[id]<[t6].[id] ORDER BY [t7].[id] DESC))
       FROM [test] AS [t6] WHERE [t6].[id]<[t5].[id] ORDER BY [t6].[id] DESC))
     FROM [test] AS [t5] WHERE [t5].[id]<[t4].[id] ORDER BY [t5].[id] DESC))
   FROM [test] AS [t4] WHERE [t4].[id]<[t3].[id] ORDER BY [t4].[id] DESC))
 FROM [test] AS [t3] WHERE [t3].[id]<[t2].[id] ORDER BY [t3].[id] DESC))
FROM [test] AS [t2] WHERE [t2].[id]<[t1].[id] ORDER BY [t2].[id] DESC))

FROM
[test] AS [t1]
ORDER BY [t1].[id] DESC


Nz- возвращает пустую строку, если аргумент null.

Но хочется более изящного решения


 
Кщд   (2010-02-03 07:51) [2]

http://allenbrowne.com/func-concat.html
http://www.databasejournal.com/features/msaccess/article.php/2247531/Concatenate-Column-Values-from-Multiple-Rows-into-a-Single-Column-with-Access.htm


 
Дмитрий С ©   (2010-02-03 08:16) [3]


> Кщд   (03.02.10 07:51) [2]

Понятно. А разве можно использовать макросы, если подключаешься к базе через ADO ?

+ Желательно *.mdb не изменять.


 
Виталий Панасенко(дом)   (2010-02-03 10:41) [4]

iif используй для проверки null


 
Дмитрий С ©   (2010-02-03 10:53) [5]


> Виталий Панасенко(дом)   (03.02.10 10:41) [4]

В нем два раза выражение указывать нужно


 
Виталий Панасенко(дом)   (2010-02-03 16:51) [6]

и что? зато работает


 
Дмитрий С ©   (2010-02-04 05:20) [7]


> Виталий Панасенко(дом)   (03.02.10 16:51) [6]

Вопрос не в этом. Вопрос в объединении нескольких записей в одну строку одним запросом.

Сопутствующий вопрос: Есть в Access-овой базе аналог LIMIT из MySQL ? Чтобы можно было задать количество записей и задать с какой начинать.


 
Anatoly Podgoretsky ©   (2010-02-04 08:53) [8]

> Дмитрий С  (04.02.2010 05:20:07)  [7]

Легче перечислить те базы, где есть LIMIT, чем те где его нет.
В Акцесс есть только стандартный TOP



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

Текущий архив: 2011.10.30;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.006 c
3-1265198959
grammar-nazi
2010-02-03 15:09
2011.10.30
настройки bde для dbase level 7


15-1309513713
Дмитрий
2011-07-01 13:48
2011.10.30
перевод фразы


15-1309364654
Baks
2011-06-29 20:24
2011.10.30
CR2 Converter


6-1245013139
dmitryfrisky
2009-06-15 00:58
2011.10.30
Компонент TIdMappedPortTCP


1-1269856808
Локара
2010-03-29 14:00
2011.10.30
Где Delphi 7 хранит инф-цию о пакетах