Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

MySQL: слияние элементов столбца в одну ячейку через разделитель. (Mixer)
Author Message
Mixer
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue Nov 11, 2003 7:44 pm ()
   Post subject: чуть о Mysql
Reply with quote

О MySql (без php )Возможно ли в столбце объединение всех строк в одну общую ячейку (навроде Итого и т.п.)
Back to top
Дмитрий Эсс
Участник форума



Joined: 06 Jul 2003
Posts: 2533
Карма: 3
   поощрить/наказать

Location: Таллинн, Эстония

PostPosted: Tue Nov 11, 2003 8:36 pm (спустя 51 минуту)
   Post subject:
Reply with quote

Mixer wrote:
О MySql (без php )
Раз без пхп, то Вы не по адресу.
Back to top
View user's profile Send private message Send e-mail
Дмитрий Эсс
Участник форума



Joined: 06 Jul 2003
Posts: 2533
Карма: 3
   поощрить/наказать

Location: Таллинн, Эстония

PostPosted: Tue Nov 11, 2003 8:36 pm (спустя 15 секунд)
   Post subject:
Reply with quote


М

Перенесено из форума: Программирование::PHP::Все в кучу.
Перенесено в форум: Прочее.
Back to top
View user's profile Send private message Send e-mail
Дмитрий Эсс
Участник форума



Joined: 06 Jul 2003
Posts: 2533
Карма: 3
   поощрить/наказать

Location: Таллинн, Эстония

PostPosted: Tue Nov 11, 2003 8:53 pm (спустя 16 минут)
   Post subject:
Reply with quote

Не совсем понял вопрос, если Вам надо подвести итого под столбцом, то см. www.mysql.com/doc/en/GROUP-BY-Functions.html
Back to top
View user's profile Send private message Send e-mail
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Tue Nov 11, 2003 10:45 pm (спустя 1 час 52 минуты)
   Post subject:
Reply with quote

Mixer:
CONCAT - может слышали ? Я угадал ?
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 412
   поощрить/наказать


PostPosted: Wed Nov 12, 2003 3:45 am (спустя 5 часов 11 секунд)
   Post subject:
Reply with quote

Code (SQL): скопировать код в буфер обмена
SET @a:='';
SELECT @a:=concat(@a, t.str) FROM TABLE AS t ORDER BY id;
Но только учтите, что это очень медленно работает. Вероятно, недочет в MySQL, в результате которого он постоянно копирует туда-сюда строки и выделяет память. Значительно быстрее (как это ни странно) будет сделать select into outfile для данного столбца, затем прочитать целиком этот файл (средствами PHP) и объединить строки. Именно так работает на этом форуме Поиск (потому-то он и не тормозит и позволяет без проблем составлять скобочные запросы).
Back to top
View user's profile Send private message Send e-mail
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Wed Nov 12, 2003 4:13 pm (спустя 12 часов 28 минут)
   Post subject:
Reply with quote

Дмитрий Котеров wrote:
не тормозит
[offtopic] А какой примерно объем базы ? 5 Мб ? 20 Мб ? В таком случае любой грамотно написанный поисковик не будет "тормозить", и будет работать очень быстро (мой поисковик ищет по 30 Мб за 0.5 сек). А вот если приближается к Гб, тогда стоит задуматься, куда бы еще запихнуть этот outfile...
Back to top
View user's profile Send private message Send e-mail
Евгений Бондарев
Модератор



Joined: 10 Mar 2003
Posts: 723
Карма: 16
   поощрить/наказать

Location: Харьков/Киев, Украина

PostPosted: Wed Nov 12, 2003 6:32 pm (спустя 2 часа 18 минут)
   Post subject:
Reply with quote

yUAC:
Объем базы тут (forum.dklab.ru/statistics.php) показывают...
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Wed Nov 12, 2003 7:37 pm (спустя 1 час 5 минут)
   Post subject:
Reply with quote

Евгений Бондарев:
Спасибо, не знал :). 45 Мб... Че-то много... Тогда понятно, почему несколько секунд ищет...
Back to top
View user's profile Send private message Send e-mail
Дмитрий Эсс
Участник форума



Joined: 06 Jul 2003
Posts: 2533
Карма: 3
   поощрить/наказать

Location: Таллинн, Эстония

PostPosted: Wed Nov 12, 2003 10:24 pm (спустя 2 часа 46 минут)
   Post subject:
Reply with quote

yUAC:
Тормозит, т.к. там делается куча подзапросов при использовании специальных символов. См. Парсер поисковых запросов, как здесь. (forum.dklab.ru/php/advises/ParserPoiskovihZaprosovKakZdes.html) .
Back to top
View user's profile Send private message Send e-mail
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Wed Nov 12, 2003 11:10 pm (спустя 46 минут)
   Post subject:
Reply with quote

Дмитрий Эсс:
База 45 Мб это уже не шуточки (для SELECT INTO OUTFILE)... Хотя не уверен, что он ищет совсем по всей базе - ИМХО там просто есть индекс слов в каждой теме, и по нему производится поиск.
Back to top
View user's profile Send private message Send e-mail
Дмитрий Эсс
Участник форума



Joined: 06 Jul 2003
Posts: 2533
Карма: 3
   поощрить/наказать

Location: Таллинн, Эстония

PostPosted: Wed Nov 12, 2003 11:45 pm (спустя 35 минут)
   Post subject:
Reply with quote

yUAC:
Ну не все же 45 мегов выбираются из базы =).

З.Ы. пошёл бессмысленный спор.
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 412
   поощрить/наказать


PostPosted: Fri Nov 14, 2003 4:21 am (спустя 1 день 4 часа 35 минут)
   Post subject:
Reply with quote

yUAC wrote:
45 Мб... Че-то много...
Больше половины занимают индексы к поисковой таблицы соответствий слов постингам (даже не данные — именно внутренние индексы MySQL).
Back to top
View user's profile Send private message Send e-mail
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Fri Nov 14, 2003 5:30 pm (спустя 13 часов 8 минут)
   Post subject:
Reply with quote

Дмитрий Котеров:
Но ведь именно по этой половине идет поиск... Или нет ?
Back to top
View user's profile Send private message Send e-mail
Дмитрий Эсс
Участник форума



Joined: 06 Jul 2003
Posts: 2533
Карма: 3
   поощрить/наказать

Location: Таллинн, Эстония

PostPosted: Fri Nov 14, 2003 8:10 pm (спустя 2 часа 40 минут)
   Post subject:
Reply with quote

yUAC:
Это нормальный размер, у меня БД, примерно такого жк размера и тормоза ощущаются только при использовании регов. А без них и 100-ни мегобайт не проблема, если есть нормальный индекс.
Back to top
View user's profile Send private message Send e-mail
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Sat Nov 15, 2003 1:32 am (спустя 5 часов 21 минуту)
   Post subject:
Reply with quote

Дмитрий Эсс wrote:
если есть нормальный индекс
Дело в том, какого этот индекс размера. Если индекс в 20 мегабайт, это уже настораживает.
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 412
   поощрить/наказать


PostPosted: Sat Nov 15, 2003 2:50 am (спустя 1 час 18 минут)
   Post subject:
Reply with quote

Что это Вы такой настороженный сегодня? И то Вас настораживает, и се... А главное, догадываюсь, что настораживает оно Вас не по какой-то объективной причине, а только для того, чтобы что-нибудь написать.
(-;
Back to top
View user's profile Send private message Send e-mail
BikerSoul
Участник форума



Joined: 23 Feb 2004
Posts: 163
Карма: 6
   поощрить/наказать


PostPosted: Fri Apr 09, 2004 2:16 pm (спустя 4 месяца 24 дня 11 часов 25 минут)
   Post subject:
Reply with quote

создаю базу mysql, выбирая записи из dbf-файла - база хоть и не 40 Mb, но посреди выполнения возникает ошибка - не хватает вирт памяти.
Подскажите, что нужно поменять или что где дописать
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 412
   поощрить/наказать


PostPosted: Fri Apr 09, 2004 6:57 pm (спустя 4 часа 40 минут)
   Post subject:
Reply with quote

Чем выбираете?
Back to top
View user's profile Send private message Send e-mail
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Fri Apr 09, 2004 7:08 pm (спустя 11 минут)
   Post subject:
Reply with quote

BikerSoul wrote:
не хватает вирт памяти.
Ну не надо же сразу из такой большой базы все данные выбирать... Надо потихонечьку - пару сотен записей выбрать, пару сотен вставить, не больше. А то все в память-то и не влезет...
BikerSoul wrote:
база хоть и не 40 Mb
А 40 Тб ;)
Back to top
View user's profile Send private message Send e-mail
BikerSoul
Участник форума



Joined: 23 Feb 2004
Posts: 163
Карма: 6
   поощрить/наказать


PostPosted: Sat Apr 10, 2004 1:26 pm (спустя 18 часов 18 минут)
   Post subject:
Reply with quote

Дмитрий Котеров:
Quote:
Чем выбираете?
dbase_get_record
yUAC:
Quote:
Ну не надо же сразу... ...все данные выбирать...
получаю запись и сразу вставляю
Quote:
40 Тб
около 10Мб
Back to top
View user's profile Send private message
BikerSoul
Участник форума



Joined: 23 Feb 2004
Posts: 163
Карма: 6
   поощрить/наказать


PostPosted: Sat Apr 10, 2004 2:33 pm (спустя 1 час 6 минут)
   Post subject:
Reply with quote

убрал все лишнее, связвнное с выводом попутной информации, и прошло без ошибок
.................
подскажите, куда посмотреть, если возникнут ошибки такого рода
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 412
   поощрить/наказать


PostPosted: Sat Apr 10, 2004 5:25 pm (спустя 2 часа 52 минуты)
   Post subject:
Reply with quote

Увеличить размер виртуальной памяти и освобождать результат, возмращенный SQL-функциями (например, mysql_free_result()). А вообще, лучше в таких случаях сделать дамп базы сторонними средствами, а потом загрузить его в MySQL при помощи mysql.exe.
Back to top
View user's profile Send private message Send e-mail
DmitriyPopov
Участник форума



Joined: 10 Mar 2003
Posts: 1491
Карма: 22
   поощрить/наказать


PostPosted: Wed Apr 28, 2004 3:35 pm (спустя 17 дней 22 часа 9 минут)
   Post subject:
Reply with quote

yUAC wrote:
Дело в том, какого этот индекс размера. Если индекс в 20 мегабайт, это уже настораживает.
Прошу прощения, а какая разница, какого размера ИНДЕКС?
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Wed Apr 28, 2004 4:00 pm (спустя 25 минут)
   Post subject:
Reply with quote

Дмитрий Попов wrote:
Прошу прощения, а какая разница, какого размера ИНДЕКС?
Нашел, что спросить :) . Это знаешь, когда было... ;)
Back to top
View user's profile Send private message Send e-mail
DmitriyPopov
Участник форума



Joined: 10 Mar 2003
Posts: 1491
Карма: 22
   поощрить/наказать


PostPosted: Wed Apr 28, 2004 4:41 pm (спустя 40 минут)
   Post subject:
Reply with quote

А..... ну да... =)
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 412
   поощрить/наказать


PostPosted: Tue May 10, 2005 10:23 pm (спустя 1 год 12 дней 5 часов 42 минуты; написано за 22 секунды)
   Post subject:
Reply with quote

Вот тут новая информация поступила.
xpoint.ru/forums/computers/dbms/mysql/thread/31031.xhtml

Начиная с Mysql 4.1 так сделать можно, используя функцию GROUP_CONCAT:

CREATE TABLE `table` (`field` TINYTEXT);

SELECT GROUP_CONCAT(`table`.`field` SEPARATOR ' ') FROM `table`;
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML