Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2017, 10:35   #1
nactyx
Форумчанин
 
Регистрация: 11.10.2010
Сообщений: 152
По умолчанию Значения через запятую

Добрый день!

Вот такой запрос:
Код:
SELECT name
	FROM t1
	left join t2  on t1.id=t2.id
where t1.idid = 323780
На выходе получаю две или более строк в столбце "name". А нужна одна строка со значениями через запятую.

Имеется:
name
текст1
текст2
текст3

Необходимо:
name
текст1, текст2, текст3 и т.д.

Погуглил, нашел и stuff, и т.п., но к своему примеру адаптировать так и не получилось. Нужна Ваша помощь и заранее благодарю!
nactyx вне форума Ответить с цитированием
Старый 22.03.2017, 11:04   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Какая СУБД ?
А может это проще на клиенте результаты запроса в цикле объединить через запятую?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.03.2017, 11:07   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

SELECT GROUP_CONCAT(name SEPARATOR ',') ...
p51x на форуме Ответить с цитированием
Старый 22.03.2017, 11:13   #4
nactyx
Форумчанин
 
Регистрация: 11.10.2010
Сообщений: 152
По умолчанию

СУБД Sql Server 2012, не MySQL. Видимо поэтому вариант от p51x не работает.

С group_concat не работает.
Цитата:
Incorrect syntax near 'SEPARATOR'
nactyx вне форума Ответить с цитированием
Старый 22.03.2017, 11:19   #5
nactyx
Форумчанин
 
Регистрация: 11.10.2010
Сообщений: 152
По умолчанию

Сделал со stuff все-таки, разобрался, спасибо.
nactyx вне форума Ответить с цитированием
Старый 22.03.2017, 11:30   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Так еще
Код:
SELECT T.Rod, (SELECT Tip_Gruz + ',' FROM Gdc801 T0 WHERE T0.Rod = T.Rod FOR XML PATH(''))
  FROM Gdc801 T
  WHERE N_vag <100000
  GROUP BY T.Rod
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 22.03.2017, 11:38   #7
nactyx
Форумчанин
 
Регистрация: 11.10.2010
Сообщений: 152
По умолчанию

Аватар, спасибо, возьму на заметку.
nactyx вне форума Ответить с цитированием
Старый 12.04.2017, 16:21   #8
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,876
По умолчанию

В самом простом варианте я использую такое (раньше тоже юзал FOR XML PATH, но он многословнее этого варианта)
Код:
DECLARE @str nvarchar(max)
SELECT @str = ISNULL(@str + ',', '') + tbl.MyField
FROM MyTable tbl
ORDER BY tbl.MyField
SELECT @Str
В более сложном (когда нужна группировка значений, а не одна итоговая строчка) гуглите Group Concat - на мсдн есть готовый пример кода .NET сборки для внедрения в базу такой агрегатной функции.
phomm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Если дата (ддд), через запятую Евгений Таб Microsoft Office Excel 4 21.08.2014 16:12
Проверка слов написанных через запятую в Edit FleXik Общие вопросы Delphi 19 10.07.2014 08:04
Вывод массива выборки через запятую Nenado PHP 2 01.08.2013 20:48
DBLookupComboBox занести в Edit через запятую бумблгум БД в Delphi 2 07.02.2013 12:16
StringList. Вывод списка через запятую(знак , ) Человек_Борща Общие вопросы Delphi 7 25.05.2012 16:50