Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) MySQL Объединить 5 запросов в 1 запрос

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


     09.07.2014    MySQL    1275

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

В 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
50

1599 | 588

FastFud - 9 июля 2014 23:42 - Юзер

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

fh79655l123
11

206 | 25

fh79655l123 - 10 июля 2014 05:49 - Юзер

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

dj-avtosh
39

1479 | 390

dj-avtosh - 10 июля 2014 10:37 - шашлычник

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

skype: elhan.isaev

fh79655l123
11

206 | 25

fh79655l123 - 10 июля 2014 15:51 - Юзер

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

fh79655l123
11

206 | 25

fh79655l123 - 10 июля 2014 19:05 - Юзер

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

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

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

 23.04.2014 fh79655l123  MySQL