Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » MySQL » Объединить 5 запросов в 1 запрос

Объединить 5 запросов в 1 запрос


     09.07.2014    Все вопросы » MySQL    2507

вопрос
Взял код при котором идет проверка сколько юзеров добавило новость в избранное.

В show.full.php после строки: $row['category'] = intval( $row['category'] );
$favc = $db->super_query("SELECT count(*) as c FROM " . USERPREFIX . "_users WHERE favorites REGEXP '[[:<:]]{$row['id']}[[:>:]]'");
$tpl->set("{favcount}", intval($favc['c']));

Похожее сделал для Favall v2.0
$favc = $db->super_query("SELECT count(*) as c FROM " . USERPREFIX . "_users WHERE favFilms REGEXP '[[:<:]]{$row['id']}[[:>:]]'");
$tpl->set("{favfilmscount}", intval($favc['c']));
        
$favc = $db->super_query("SELECT count(*) as c FROM " . USERPREFIX . "_users WHERE favWillLook REGEXP '[[:<:]]{$row['id']}[[:>:]]'");
$tpl->set("{favwilllookcount}", intval($favc['c']));

$favc = $db->super_query("SELECT count(*) as c FROM " . USERPREFIX . "_users WHERE favFindWeb REGEXP '[[:<:]]{$row['id']}[[:>:]]'");
$tpl->set("{favfindwebcount}", intval($favc['c']));

$favc = $db->super_query("SELECT count(*) as c FROM " . USERPREFIX . "_users WHERE favWatched REGEXP '[[:<:]]{$row['id']}[[:>:]]'");
$tpl->set("{favwatchedcount}", intval($favc['c']));

Но каждый запрос добавляет 1 и в общем 5 запросов (у меня не 2 а 3 по русскому :D ).

Как их объединить в один или сделать меньше 5?
И возможно добавить КЕШирование?

Ответил: D0Gmatist


А вам это не о чём не сказало? )))
ALTER TABLE `dle_post_extras` ADD `favFilmsSum` mediumint( 8 ) NOT NULL;
ALTER TABLE `dle_post_extras` ADD `favWillLookSum` mediumint( 8 ) NOT NULL;
ALTER TABLE `dle_post_extras` ADD `favFindWebSum` mediumint( 8 ) NOT NULL;
ALTER TABLE `dle_post_extras` ADD `favWatchedSum` mediumint( 8 ) NOT NULL;


В хаке создаются поля в постах, где подсчитывается сумма фаворитов у поста в каждом из 4-х типов Favall

5 комментариев

FastFud
Юзер

FastFud - 9 июля 2014 23:42 -

Объединить их в один при этом вывести разные значения, думаю не возможно.
{favfilmscount}
{favwilllookcount}
{favfindwebcount}
{favwatchedcount}
P.S - Возможно я ошибаюсь.

fh79655l123
Юзер

fh79655l123 - 10 июля 2014 05:49 -

Если FastFud прав что нельзя уменьшить количество запросов при этом вывести разные значения, то хотя бы как сделать кеширование этих значений??

dj-avtosh
PHP-developer

dj-avtosh - 10 июля 2014 10:37 -

Можно сделать селект и считать на уровне прохождения по массиву.

https://elkhan.ru
По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

fh79655l123
Юзер

fh79655l123 - 10 июля 2014 15:51 -

D0GMATIST, теперь заметил. но все равно как мне вывести эти четыре значения с меньшим количеством запросов и сделать кеш для них?
dj-avtosh, Я в этом все мало что понимаю так что это мне не о чем не говорит... =)
Мне бы код который сразу вставить и все. =)

fh79655l123
Юзер

fh79655l123 - 10 июля 2014 19:05 -

Ну хоть кто то напишите код запроса с селектом и считать на уровне прохождения по массиву как сказал dj-avtosh, а то я полный 0 в этом.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

 23.04.2014 fh79655l123  MySQL
наверх