Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запрос -> Много результатов -> Один результат, concat 
:(
    Опции темы
СтудентИзРоссии
Дата 4.3.2007, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 13.11.2006

Репутация: нет
Всего: нет



Добрый день!

Есть таблица:
id name
1 vasya
2 petya
3 ivan

Подскажите запросом, чтобы в результате получить один результат: "vasya,petya,ivan",
а не несколько: "vasya", "petya", "ivan".

Когда-то видели подобный пример в чьём-то блоге, к сожалению ссылка утеряна.
PM MAIL   Вверх
skyboy
Дата 4.3.2007, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



Код

SELECT group_concat(name) FROM people

системная переменная group_concat_max_len определяет максимальную длину конкатенируемого. по умолчанию - значение 1024. чтоб отключить контроль за длиной, надо установить означенную переменную в 0. а вообще - не понимаю, зачем нужда в таких извращениях smile
PM MAIL   Вверх
СтудентИзРоссии
Дата 4.3.2007, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 13.11.2006

Репутация: нет
Всего: нет



Цитата(skyboy @ 4.3.2007,  23:05)
Код

SELECT group_concat(name) FROM people

системная переменная group_concat_max_len определяет максимальную длину конкатенируемого. по умолчанию - значение 1024. чтоб отключить контроль за длиной, надо установить означенную переменную в 0. а вообще - не понимаю, зачем нужда в таких извращениях smile

#1064 - You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near '( name )
FROM people LIMIT 0, 30' at line 1

MySQL 4.0
PM MAIL   Вверх
skyboy
Дата 4.3.2007, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



в следующий раз - сразу называй версию.
Цитата(dev.mysql.com)

A wonderful alternative to group_concat for versions prior 4.1 is MyGroupConcat: A MySQL UDF aggregate function for string concatenation By Emmanuel Kartmann
http://www.codeproject.com/useritems/MyGroupConcat.asp
It only works for Windows though. smile

Но сам с UDF не работал - помочь с изучением содержимого ссылки не смогу.

Добавлено @ 23:52 
сорри, ссылка со времен публикации изменилась:
http://www.codeproject.com/Purgatory/mygroupconcat.asp
Но, конечно, если хостинг не твой, никто не позволит ставить свои модули с собственными UDF. в таком случае, решения мне не видится, кроме как валить с хостинга, на котором MYSQL даже не версии 4.1.
PM MAIL   Вверх
СтудентИзРоссии
Дата 5.3.2007, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 13.11.2006

Репутация: нет
Всего: нет



Цитата(skyboy @ 4.3.2007,  23:48)
в следующий раз - сразу называй версию.
Цитата(dev.mysql.com)

A wonderful alternative to group_concat for versions prior 4.1 is MyGroupConcat: A MySQL UDF aggregate function for string concatenation By Emmanuel Kartmann
http://www.codeproject.com/useritems/MyGroupConcat.asp
It only works for Windows though. smile

Но сам с UDF не работал - помочь с изучением содержимого ссылки не смогу.

Добавлено @ 23:52 
сорри, ссылка со времен публикации изменилась:
http://www.codeproject.com/Purgatory/mygroupconcat.asp
Но, конечно, если хостинг не твой, никто не позволит ставить свои модули с собственными UDF. в таком случае, решения мне не видится, кроме как валить с хостинга, на котором MYSQL даже не версии 4.1.

Спасибо за совет и за попытку помочь.
PM MAIL   Вверх
Wolf1994
Дата 5.3.2007, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: нет
Всего: 29



Может так подойдёт?

Код

$r=mysql_query ("SELECT name FROM table");

while ($row=mysql_fetch_assoc ($r))
 $out []=$row ['name'];

print implode (",", $out);

PM MAIL WWW   Вверх
СтудентИзРоссии
Дата 5.3.2007, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 13.11.2006

Репутация: нет
Всего: нет



Цитата(Wolf1994 @ 5.3.2007,  10:49)
Может так подойдёт?

Код

$r=mysql_query ("SELECT name FROM table");

while ($row=mysql_fetch_assoc ($r))
 $out []=$row ['name'];

print implode (",", $out);

Именно от нескольких результатов от MySQL и хотим избавиться,
чтобы вся выборка делала сама БД, а затем парсить этот результат:

Код
<?
$result = mysql_result(mysql_query("QUERY"),0,0);
print_r(explode(",", $result));
?>

PM MAIL   Вверх
Wolf1994
Дата 5.3.2007, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: нет
Всего: 29



Выборку, по-любому, сделает БД - один раз. Разница в скорости тоже, наверное, не будет ощутимой. Процесс "загона" значений в массив вряд ли сильно уступит парсингу, по каким либо критериям.

P.S. Моё IMHO.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0593 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.