Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 конкатенация строк  [new]
ильдар4
Member

Откуда:
Сообщений: 135
Доброго времени. Прошу помощи в решении следующей проблемы.
Делаю запрос:

Имеется 3 таблицы: Quiz ([QuizId],[QuizName]),QuizQuestion([QuestionId],[QuizId],[QuestionNumber],QustionText])
,QuizAnswer([QuizAnswerId],[QuestionId],[AnswerText],[AnswerDescription])

Делаю запрос:
select q.QuizName, qq.QuestionNumber,qq.QustionText,qa.QuizAnswerId, qa.AnswerText,qa.AnswerDescription
from Quiz q
inner join QuizQuestion qq on q.QuizId = qq.QuizId
inner join QuizAnswer qa on qq.QuestionId = qa.QuestionId
where q.QuizId = 1
Получаю :

QuizName QuestionNumber QustionText QuizAnswerId AnswerText
Методика «Цель-средство-Результат»(ЦСР).Автор: Карманов А.А. 1 Я активный человек 10101 да
Методика «Цель-средство-Результат»(ЦСР).Автор: Карманов А.А. 1 Я активный человек 10102 нет

а нужно Методика «Цель-средство-Результат»(ЦСР).Автор: Карманов А.А. 1 Я активный человек 10101,10102 да,нет

подскажите пожалуйста
30 ноя 11, 14:36    [11683724]     Ответить | Цитировать Сообщить модератору
 Re: конкатенация строк  [new]
Baddy
Member

Откуда: Харьков
Сообщений: 174
ильдар4,

FAQ
30 ноя 11, 14:41    [11683782]     Ответить | Цитировать Сообщить модератору
 Re: конкатенация строк  [new]
ильдар4
Member

Откуда:
Сообщений: 135
Но тут без join-ов
30 ноя 11, 14:45    [11683816]     Ответить | Цитировать Сообщить модератору
 Re: конкатенация строк  [new]
ильдар4
Member

Откуда:
Сообщений: 135
Baddy,

Но https://www.sql.ru/faq/faq_topic.aspx?fid=731 без join-ов
30 ноя 11, 14:46    [11683822]     Ответить | Цитировать Сообщить модератору
 Re: конкатенация строк  [new]
Baddy
Member

Откуда: Харьков
Сообщений: 174
ну и что, что без джоинов? как вариант, для простоты засуньте результат вашего запроса с джоинами во временную табличку, и уже из нее конкатинируйте
30 ноя 11, 14:54    [11683884]     Ответить | Цитировать Сообщить модератору
 Re: конкатенация строк  [new]
ильдар4
Member

Откуда:
Сообщений: 135
Baddy,Сделал так как Вы сказали, использовал временную таблицу, теперь QustionText дублируется
30 ноя 11, 15:09    [11683997]     Ответить | Цитировать Сообщить модератору
 Re: конкатенация строк  [new]
ильдар4
Member

Откуда:
Сообщений: 135
Baddy,

вот запрос
select q.QuizName,
[Описание] = replace((select cast(QuestionNumber as nvarchar(max)) + ' ' + QustionText + ' ' + cast(QuizAnswerId as nvarchar(max)) from #temp_data where QuizName = q.QuizName for xml path('')), ' ', ',')
from #temp_data q
group by q.QuizName
30 ноя 11, 15:10    [11684003]     Ответить | Цитировать Сообщить модератору
 Re: конкатенация строк  [new]
ильдар4
Member

Откуда:
Сообщений: 135
ильдар4,
Что я не так делаю?
30 ноя 11, 15:50    [11684332]     Ответить | Цитировать Сообщить модератору
 Re: конкатенация строк  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
ильдар4
ильдар4,
Что я не так делаю?
Разговариваете сами с собой
30 ноя 11, 16:31    [11684758]     Ответить | Цитировать Сообщить модератору
 Re: конкатенация строк  [new]
ильдар4
Member

Откуда:
Сообщений: 135
iap,

полуается так
30 ноя 11, 16:52    [11684933]     Ответить | Цитировать Сообщить модератору
 Re: конкатенация строк  [new]
Baddy
Member

Откуда: Харьков
Сообщений: 174
ильдар4,

было бы неплохо пользоваться тегом src)
так нужно?
declare @tab table (QuizName varchar(100), QuestionNumber varchar(100),QustionText varchar(100),QuizAnswerId varchar(100), AnswerText varchar(100))
insert @tab values
('Методика «Цель-средство-Результат»(ЦСР).Автор: Карманов А.А.', '1', 'Я активный человек', '10101', 'да'),
('Методика «Цель-средство-Результат»(ЦСР).Автор: Карманов А.А.', '1', 'Я активный человек', '10102', 'нет')

select QuizName, QuestionNumber, QustionText,
  QuizAnswerId = stuff((select ','+QuizAnswerId
						from @tab where QuizName = t.QuizName and QuestionNumber = t.QuestionNumber and QustionText = t.QustionText for xml path('')), 1,1, '')
,	AnswerText = stuff((select ','+AnswerText
						from @tab where QuizName = t.QuizName and QuestionNumber = t.QuestionNumber and QustionText = t.QustionText for xml path('')), 1,1, '')					
from @tab t
group by QuizName, QuestionNumber, QustionText
30 ноя 11, 17:57    [11685464]     Ответить | Цитировать Сообщить модератору
 Re: конкатенация строк  [new]
ильдар4
Member

Откуда:
Сообщений: 135
Baddy,

Спасибо огромное!
1 дек 11, 12:31    [11688570]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить