![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Несколько строк в одну (*.mdb) [Access]
Дмитрий С © (2010-02-03 05:18:00)Есть таблица:
id name
1 Алексей
2 Дмитрий
3 Виктор
4 Иван
Нужно составить запрос который, для всей данной таблицы вернет одно значение:
"Алексей/Дмитрий/Виктор/Иван"
Обработать запрос в программе нельзя, т.к. ее исходников нет, изменить можно только сам запрос.
Anatoly Podgoretsky (2010-02-04 08:53:00) [1]> Дмитрий С (04.02.2010 05:20:07) [7]
Легче перечислить те базы, где есть LIMIT, чем те где его нет.
В Акцесс есть только стандартный TOP
Дмитрий С (2010-02-04 05:20:00) [2]
> Виталий Панасенко(дом) (03.02.10 16:51) [6]
Вопрос не в этом. Вопрос в объединении нескольких записей в одну строку одним запросом.
Сопутствующий вопрос: Есть в Access-овой базе аналог LIMIT из MySQL ? Чтобы можно было задать количество записей и задать с какой начинать.
Виталий Панасенко(дом) (2010-02-03 16:51:00) [3]и что? зато работает
Дмитрий С (2010-02-03 10:53:00) [4]
> Виталий Панасенко(дом) (03.02.10 10:41) [4]
В нем два раза выражение указывать нужно
Виталий Панасенко(дом) (2010-02-03 10:41:00) [5]iif используй для проверки null
Дмитрий С (2010-02-03 08:16:00) [6]
> Кщд (03.02.10 07:51) [2]
Понятно. А разве можно использовать макросы, если подключаешься к базе через ADO ?
+ Желательно *.mdb не изменять.
Кщд (2010-02-03 07:51:00) [7]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 06:19:00) [8]На ум приходит примерно такой вариант:
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.
Но хочется более изящного решения