Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
GROUP_CONCAT (AXAE) 27/03/2007 - 10:16:09
      Re: GROUP_CONCAT (AXAE) 27/03/2007 - 12:40:26
      Re: GROUP_CONCAT (Валерий) 19/04/2007 - 10:13:29
      Re: GROUP_CONCAT (group_concat_max_len) 26/06/2007 - 16:31:03

> Original message text:
> From: AXAE - 27/03/2007 - 10:16:09
> Subject:GROUP_CONCAT
> -----------------
> Какие ограничения накладываются на работу GROUP_CONCAT?
> Этот запрос работает:
> SELECT CONCAT_WS('\r',`_profiles`.name,GROUP_CONCAT(DISTINCT CONCAT_WS('\t',
> CONCAT(Fam, ' ', LEFT(humans.`Name`,1), '. ', LEFT(LastName,1),'.'), DateBirth, `scards`.Profession)
> SEPARATOR '\r')) as LIST_DISPANCE
> FROM `scards` INNER JOIN humans ON scards.`idHuman`=humans.id
> INNER JOIN `list_profiles_on_scard` ON scards.id=`list_profiles_on_scard`.`idScard`
> INNER JOIN `_profiles` ON `list_profiles_on_scard`.`idProfile`=_profiles.`id`
> WHERE scards.idPMO=9 AND `_profiles`.`tip`='RISK'
> GROUP BY `_profiles`.name
>
> Выдает три строки с таким полем (в квадратных скобках - это символы, уже присутствующие в результирующей строке - символы возврата каретки):
> Первая строка:
> Profile.name1 [return]
> FIO1 [tab] DateBirth[return]
> FIO2 [tab] DateBirth[return]
>
> Вторая:
> Profile.name2[return]
> FIO2 [tab] DateBirth[return]
>
> Третья:
> Profile.name3[return]
> FIO3 [tab] DateBirth[return]
>
> То есть это в строках уже такие группы фамилий с заголовком.
> Но если я повторно пытаюсь сделать одну строку из этих трех (чтобы можно было ее как есть вставить в текстовый файл) с разделителем '\r':
> SELECT GROUP_CONCAT(CONCAT_WS('\r',`_profiles`.name,GROUP_CONCAT(DISTINCT CONCAT_WS('\t',
> CONCAT(Fam, ' ', LEFT(humans.`Name`,1), '. ', LEFT(LastName,1),'.'), DateBirth, `scards`.Profession)
> SEPARATOR '\r')) SEPARATOR '\r') as LIST_DISPANCE
> FROM `scards` INNER JOIN humans ON scards.`idHuman`=humans.id
> INNER JOIN `list_profiles_on_scard` ON scards.id=`list_profiles_on_scard`.`idScard`
> INNER JOIN `_profiles` ON `list_profiles_on_scard`.`idProfile`=_profiles.`id`
> WHERE scards.idPMO=9 AND `_profiles`.`tip`='RISK'
> GROUP BY `_profiles`.name
>
> он говорит "Invalid use of group function". Есть ли какое-нибудь решение? Чтобы объединить три строки из работающего первого запроса в одну с разделителем возврата каретки?
>
>


From: AXAE - 27/03/2007 - 12:40:26
Subject:GROUP_CONCAT
-----------------
Нашел проблему:
Проблема в двух GROUP_CONCAT и одном GROUP BY. Такой винегрет делает неопределенность. GROUP BY разбивает строки GROUP_CONCAT'а...
Поэтому один из них нужно делать, как столбец:
SELECT GROUP_CONCAT(DISTINCT
(SELECT CONCAT_WS('\r',`_profiles`.name,GROUP_CONCAT(CONCAT_WS('\t',
CONCAT(Fam, ' ', LEFT(humans.`Name`,1), '. ', LEFT(LastName,1),'.'), DateBirth, `scards`.Profession)
SEPARATOR '\r')) as LIST_DISPANCE
FROM `scards` INNER JOIN humans ON scards.`idHuman`=humans.id
INNER JOIN `list_profiles_on_scard` ON scards.id=`list_profiles_on_scard`.`idScard`
INNER JOIN `_profiles` ON _profiles.id=`list_profiles_on_scard`.`idProfile`
WHERE scards.idPMO=9 AND `list_profiles_on_scard`.idProfile=outertable.id
GROUP BY `_profiles`.`name`) SEPARATOR '\r\r') as STR
FROM _profiles as outertable
INNER JOIN list_profiles_on_scard ON outertable.id=`list_profiles_on_scard`.`idProfile`
INNER JOIN `scards` ON scards.id=`list_profiles_on_scard`.`idScard`
AND scards.idPMO=9 AND `list_profiles_on_scard`.idProfile=outertable.id
WHERE outertable.`tip`='RISK'


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
31732



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |