Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> подсчитать в строки 
V
    Опции темы
gcc
Дата 9.12.2008, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

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



в таблице MySQL нужно подчситать количество email которые рассположены через запятую
(но может быть одно значение без запятой)

id | email
-----------
1  | [email protected], [email protected]
2  | [email protected]
3  | [email protected], [email protected], [email protected]


если так, то не получается
Код

@array = split(/,/, $rows->{'email'});


подскажите если можно так сделать?

точнее какой метод из DBI использовать? не пойму

 

Это сообщение отредактировал(а) gcc - 9.12.2008, 23:21
PM WWW ICQ Skype GTalk Jabber   Вверх
IceSunrise
Дата 9.12.2008, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



gcc,  а что "не получается", вроде как нужно разбивает...?
PM MAIL   Вверх
gcc
Дата 9.12.2008, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

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



извините,  поспешил, примерно так сделал:

Код

 @ary = $sth->fetchrow_array;
$n=0;
 foreach $item (@ary) {
 $nn = split(/,/, $item);
  $n+=$nn;
}


Это сообщение отредактировал(а) gcc - 9.12.2008, 19:36
PM WWW ICQ Skype GTalk Jabber   Вверх
tolkien
Дата 9.12.2008, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



У вас неправильная спроектированная таблица. В правильной таблице в одной ячейке должно быть только одно значение. 
PM MAIL   Вверх
dmitryk1
Дата 10.12.2008, 06:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 10.6.2008
Где: Новосибирск

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



Цитата(tolkien @ 9.12.2008,  22:36)
У вас неправильная спроектированная таблица. В правильной таблице в одной ячейке должно быть только одно значение.

Блин, гениально сказано. Нечего сказать, не надо флудить. Может он разгребает за такими вот гениальными писателяпи тою. что они "наработали" ранее. Опять же неизвестно какие условия при проектировании были, так что слишком уж ты категоричный.

Кстати, у гуголя хранится именно так в адрбуке. Предлагаю тебе перепроектировать и переписать гуглемыл smile

2gcc: 
У тебя в $nn складывается количество или первый найденный емыл? Может тут беда?



PM MAIL GTalk Jabber   Вверх
amg
Дата 10.12.2008, 07:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



gcc, подсчет таким способом, как к Вас, небезопасен. Например, если приведенный Вами кусок кода находится внутри подпрограммы, результат работы этой подпрограммы может оказаться неверным, т.к. split, если ей не указали в явном виде массив, куда следует поместить поля, помещает их в @_ и тем самым перезапишет @_ подпрограммы. 

Безопаснее (и быстрее)
Код
$nn = $item=~tr/,/,/;
$n += $nn+1;


Это сообщение отредактировал(а) amg - 10.12.2008, 07:22
PM MAIL   Вверх
tolkien
Дата 10.12.2008, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(dmitryk1 @ 10.12.2008,  06:37)
Цитата(tolkien @ 9.12.2008,  22:36)
У вас неправильная спроектированная таблица. В правильной таблице в одной ячейке должно быть только одно значение.

Блин, гениально сказано. Нечего сказать, не надо флудить. Может он разгребает за такими вот гениальными писателяпи тою. что они "наработали" ранее. Опять же неизвестно какие условия при проектировании были, так что слишком уж ты категоричный.

Кстати, у гуголя хранится именно так в адрбуке. Предлагаю тебе перепроектировать и переписать гуглемыл smile

2gcc: 
У тебя в $nn складывается количество или первый найденный емыл? Может тут беда?

Откройте любую книгу по проектированию БД. Главу про приведение таблиц в нормальную форму.  Если бы сделали все правильно. Не нужно было бы тогда извращаться и писать ненужный код. Все делалось стандартно.

П.С Вы что в гугле работаете? И знаете структуру их БД? Или где то они выложили для общего ознакомления? 
PM MAIL   Вверх
KSURi
Дата 10.12.2008, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



del

Это сообщение отредактировал(а) KSURi - 10.12.2008, 18:13


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
KSURi
Дата 10.12.2008, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



amg, прошу прощения! Неверно я вам подсказал(
Решил перечитать на всякий случай perlop, и оказалось, не для этого нужен модификатор /c. Даже не знаю откуда такая мысль появилась.
На самом деле /c используется для замены всех не подходящих символов из SEARCHLIST на символы из REPLACEMENTLIST. Т.е.:
Код

C:\>perl -e"$_='hello';$a=tr/l/z/c;print"
zzllz
C:\>


ЗЫ: предыдущее сообщение отредактировал, чтобы не вводить людей в заблуждение


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
ginnie
Дата 10.12.2008, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



gcc, по аналогии с вариантом amg, предложу свой, без замены:

Код

$nn = () = $item =~ m/,/g;



--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
gcc
Дата 11.12.2008, 00:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

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



всем спасибо!

попробую эти варианты

таблицу я не проектировал... там таблица другая... в первом посте я привел пример, просто...

(я сначала пишу чтобы работало и правильно выглядело, а скорость потом...)

Это сообщение отредактировал(а) gcc - 19.12.2008, 09:35
PM WWW ICQ Skype GTalk Jabber   Вверх
dmitryk1
Дата 19.12.2008, 06:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 10.6.2008
Где: Новосибирск

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



Цитата(tolkien @ 10.12.2008,  08:53)
Откройте любую книгу по проектированию БД. Главу про приведение таблиц в нормальную форму.  Если бы сделали все правильно. Не нужно было бы тогда извращаться и писать ненужный код. Все делалось стандартно.

П.С Вы что в гугле работаете? И знаете структуру их БД? Или где то они выложили для общего ознакомления?

про проектирование баз данных, наверно не тут. Здесь база уже есть, работает и никто не позволит её менять...


Про гуголь: адресная книга, экспорт. Предварительно создайте и заполните один контакт с несколькими емылами. Не знаю как у них в базе, но публичный интерфейс именно такой, корявый. 
PM MAIL GTalk Jabber   Вверх
gcc
Дата 19.12.2008, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

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



Код

CREATE TABLE alias (
  address varchar(255) NOT NULL default '',
  goto text NOT NULL,
  domain varchar(255) NOT NULL default '',
  created datetime NOT NULL default '0000-00-00 00:00:00',
  modified datetime NOT NULL default '0000-00-00 00:00:00',
  active tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (address),
  KEY address (address)
) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Aliases';



таблица вот такая другая программа смотрит эту таблицу и забирает одно значение address, то есть поле address не должно дублироватся как я понял... (я не смотрел может быть можно не писать через запятую) но все равно там было...
PM WWW ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




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


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

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