Страницы

Поиск по вопросам

четверг, 11 июля 2019 г.

Нужна помощь с скриптом подсчета эффективности по словам

Пишу аналитику по словам в системе, удалось подсчитать количество заходов по словам. Но есть пару проблем:
1) Нужно отбрасывать / в конце слова, например есть статистика по слову новогодняя елка и новогодняя елка/ нужно подсчитать их в месте и вывести. Как это учесть при выборке?
2) Как в базе подсчитать количество лидов, которые попали по этим словам. При посещении посетителю подставляется hash_person, он записывает с данными utm меток в базу stat, когда клиент оставляет заявку hash_person записывается с контактными данными в базу lids. Как вывести в таблицу количество лидов например по слову "новогодняя елка"?
Скрин того что получилось: Код:
$source_p = mysql_query(" SELECT `utm_term`, COUNT(`utm_term`) AS `cnt` FROM `stat` WHERE id_cabinet = '$id_cabinet' $filtr_date GROUP BY `utm_term`"); if (mysql_num_rows($source_p) > 0) {
while ($source_c = mysql_fetch_array($source_p)) {
if ($source_c['utm_term'] !== '') { $title_source = $source_c['utm_term']; } else { $title_source = "Нет данных"; } // попытка подсчитать количество лидов по фразе $result_stat_leads = mysql_query("SELECT * FROM stat WHERE utm_term = '".$source_c['utm_term']."'" ,$db);
while ($stat_leads = mysql_fetch_array($result_stat_leads)) {
$result_count_leads = mysql_query("SELECT * FROM lids WHERE hash_person = '".$stat_leads['hash_person']."'" ,$db);
while ($count_stat_leads = mysql_fetch_array($result_count_leads)) { $count_leads = ""; // количество лидов }
}

$count_view = $source_c['cnt']; // количество заходов на сайт по фразе
echo "Слово: $title_source | Лидов: $count_leads";
}
Структура таблиц:
-- -- Структура таблицы `lids` --
CREATE TABLE IF NOT EXISTS `lids` ( `id` int(10) NOT NULL AUTO_INCREMENT, `id_cabinet` int(11) NOT NULL, `id_staff` int(10) NOT NULL, `hash_person` varchar(100) NOT NULL, `name` text NOT NULL, `tel` text NOT NULL, `email` text NOT NULL, `information` text NOT NULL, `comment` text NOT NULL, `address` text NOT NULL, `note` text NOT NULL, `datetime` datetime NOT NULL, `date_last_edit` datetime NOT NULL, `source` text NOT NULL, `add_vid` text NOT NULL, `idform` int(10) NOT NULL, `id_type` int(10) NOT NULL, `hash` varchar(32) NOT NULL, `status_old` int(10) NOT NULL, `status` int(15) NOT NULL, `delete_status` int(11) NOT NULL, `status_view` int(1) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=35997 ;
-- -- Структура таблицы `stat` --
CREATE TABLE IF NOT EXISTS `stat` ( `id` int(100) NOT NULL AUTO_INCREMENT, `id_cabinet` int(11) NOT NULL, `hash_person` varchar(35) NOT NULL COMMENT 'id зашедшего на сайт', `number_visit` int(11) NOT NULL COMMENT 'Номер визита', `id_lead` int(10) NOT NULL, `referrer_site` varchar(255) NOT NULL, `site_project` varchar(255) NOT NULL, `page_site_project` varchar(300) NOT NULL, `title_page` varchar(255) NOT NULL, `country` varchar(100) NOT NULL, `region` varchar(100) NOT NULL, `city` varchar(100) NOT NULL, `utm_source` text NOT NULL COMMENT 'обозначает источник рекламного трафика (Google, Яндекс, Email, Blog)', `utm_medium` text NOT NULL COMMENT 'определяет тип маркетингового канала (PPC, КМС, ретаргетинг, рассылка, пост)', `utm_campaign` text NOT NULL COMMENT 'соответствует названию маркетинговой кампании или рекламному объявлению или местоположению баннера', `utm_term` text NOT NULL COMMENT 'параметр, содержащий в себе ключевое слово PPC кампании', `utm_content` text NOT NULL COMMENT 'отображает контент объявления, что помогает различать разные рекламные объявления, содержащие одно и то же ключевое слово. ', `utm_block` text NOT NULL COMMENT 'Тип площадки: premium – спецразмещение other – блок внизу none – блок не на поиске Яндекса', `utm_position` text NOT NULL COMMENT 'Позиция в рекламном блоке', `utm_ad` text NOT NULL COMMENT 'Номер (ID) объявления', `utm_phrase` text NOT NULL COMMENT 'Номер (ID) ключевой фразы', `yclid` varchar(100) NOT NULL COMMENT 'Идентификатор яндекса', `datetime` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=251420 ;
Я запутался и не понимаю как дальше делать =/


Ответ

Решил проблему по совету @mike поставив индексы к обрабатываемым столбцам. Ну и сам запрос собственно улучшил и усложнил.
select ST.utm_term, ST.hash_person, COUNT(ST.utm_term) AS `stat_count`, count(distinct L.id) AS `lids_count`, count(distinct LL.id) AS `clients_count` FROM stat ST left join lids L on L.hash_person=ST.hash_person and L.id_cabinet = '$id_cabinet' $filtr_date_l and L.delete_status='0' left join leads_sort LS on LS.id_cabinet = $id_cabinet and LS.url = 'done' left join status S on LS.id_parameter = S.leadssort and S.id_cabinet = $id_cabinet left join lids LL on S.id = LL.status and LL.hash_person = ST.hash_person and L.id_cabinet = '$id_cabinet' $filtr_date_ll and LL.delete_status = '0' WHERE ST.id_cabinet=$id_cabinet $filtr_date_st GROUP BY `utm_term` ORDER BY `clients_count` DESC
И так, запрос считает 1е- сколько посетителей по данному ключевику, 2е - считает количество лидов по ключевику, 3е - считает сколько клиентов (в деньги) по определенному ключу.
Спасибо всем кто помог.

Комментариев нет:

Отправить комментарий