powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите, плз.!!! Вопрос по SQL! (подзапросы)
10 сообщений из 10, страница 1 из 1
Помогите, плз.!!! Вопрос по SQL! (подзапросы)
    #32119669
senn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подкажите, кто знает....
Необходимо сделать выборку из таблицы, при этом имена клиентов не должны повторяться (DISTINCT), а текстовое поле, значения которого может быть разное для одного и того же клиента, должно конкатенироваться, например:

до выборки:
Bond a12
Bond g145
James d23

после выборки:
Bond a12, g145
James d23

Возможно это с помощью SQL, и если - да, то как?
Спасибо большое!
...
Рейтинг: 0 / 0
Помогите, плз.!!! Вопрос по SQL! (подзапросы)
    #32119674
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-моему с помощью SQL это реализовать нельзя.
Самый простой вариант - сделать через DAO

Или в запросе можно использовать VB функцию (тоже через DAO), которая будет возвращать конкатенированную строку для каждого клиента.
...
Рейтинг: 0 / 0
Помогите, плз.!!! Вопрос по SQL! (подзапросы)
    #32119688
senn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо, у меня тоже были сомнения по этому поводу. Но вот какая ф-ция VBA подойдет для этой задачи? Дело в том, что количество строк, которые могут быть подвержены конкатенации - не ограничено. Т.е. возникает необходимость цикла. Если эта проблема не может быть решена подзапросом - прийдется делать это в модуле((.
...
Рейтинг: 0 / 0
Помогите, плз.!!! Вопрос по SQL! (подзапросы)
    #32119728
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но вот какая ф-ция VBA подойдет для этой задачи?
Самописная конечно же.

Если эта проблема не может быть решена подзапросом - прийдется делать это в модуле((
Именно в модуле это и надо делать, по другому никак.
...
Рейтинг: 0 / 0
Помогите, плз.!!! Вопрос по SQL! (подзапросы)
    #32120026
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Одним запросом, насколько я знаю, не получится сделать, но в процедуре на
T-Sql можно наваять используя функцию COALESCE

Примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
create table #t1 (f1 nvarchar( 50 ), f2 nvarchar( 4000 ))
insert into #t1 (f1) select f1 from tab1 group by f1  -- Запись непоторяющихся клиентов
 

declare @as_ret nvarchar( 4000 ), @f1 nvarchar( 50 )
declare tt cursor for select f1 from #t1 order by f1

open tt

fetch next from tt into @f1
while @@fetch_status= 0 
begin
	SELECT @as_ret=COALESCE(@as_ret + ' ,', '') + f1
	from tab1 where f1=@f1
	update #t1 set f2=@as_ret where f1=@f1
	fetch next from tt into @f1
end

select * from #t1


Возможно где-то ошибся (лень было таблицы создавать и проверять), но у меня такая схема на реальных данных работает.
...
Рейтинг: 0 / 0
Помогите, плз.!!! Вопрос по SQL! (подзапросы)
    #32120078
IgorM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://hiprog.com/access/article.asp?id=334
...
Рейтинг: 0 / 0
Помогите, плз.!!! Вопрос по SQL! (подзапросы)
    #32120090
ДиД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
за вас все уже изобретено самим Microsoft
метод GetString

Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
rst.Open "SELECT Код, Клиент FROM Клиенты ORDER BY Клиент;", CurrentProject.Connection
Список1.RowSource = rst.GetString(adClipString, , ";", ";")
rst.Close
...
Рейтинг: 0 / 0
Помогите, плз.!!! Вопрос по SQL! (подзапросы)
    #32120184
Некто
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2senn
>Возможно это с помощью SQL, и если - да, то как?
2Mind
>По-моему с помощью SQL это реализовать нельзя.

В SQL это сделать можно: http://www.sql.ru/faq/faq_topic.aspx?fid=130

Мне к сожалению не известно, поддерживает ли этот синтаксис Jet SQL (то есть mdb) :(. Но в adp Вы сможете использовать это совершенно спокойно. :)
...
Рейтинг: 0 / 0
Помогите, плз.!!! Вопрос по SQL! (подзапросы)
    #32120221
ДиД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Некто
Да это все тоже самое. просто в другом варианте. все равно приходится конкатенировать все записи вместе. нет готвых функций. только для рекордсетов есть готовая GetString
...
Рейтинг: 0 / 0
Помогите, плз.!!! Вопрос по SQL! (подзапросы)
    #32120483
Некто
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2ДиД
>Да это все тоже самое. просто в другом варианте.
Возможно. Вопрос в том, что GetString работает на клиенте, а бывают случаи, когда подобную операцию необходимо сделать на сервере (или не жалательно проделывать на клиенте). Впрочем, полагаю, для автора топика этот вариант вообще может быть не актуален.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите, плз.!!! Вопрос по SQL! (подзапросы)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]