Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
Kapralez

Синтаксис вложенных запросов

Рекомендованные сообщения

Чтобы не создавать новую тему...

Подскажите пожалуйста синтаксис вложенных запросов.

Есть прямой запрос к базе

SELECT * FROM `ibf_pickems_picks` WHERE `gameid` IN (  SELECT `id` FROM `ibf_pickems_games` WHERE `weekid` =57 AND `userid` =8554 )

 

Хочу разместить данный запрос в шаблоне. Какой у него будет синтаксис $this->DB->build( array('select' => 't.*', и т.д ?

С простыми запросами проблем нет, а вот на этом споткнулся

Спасибо!

Поделиться сообщением


Ссылка на сообщение
Хочу разместить данный запрос в шаблоне.

В шаблоне вообще размещать любые запросы не самая удачная идея. И на будущие, если вопрос не касается сабжа - в данном случае экспорт емайлов, нужно спрашивать в отдельной теме.

 

array( 'select' => 'p.*',
   'from'   => array( 'pickems_picks' => 'p' ),
   'add_join' => array( 
		array( 'from'  => array( 'pickems_games' => 'g'),
			   'where' => 'g.id=p.gameid',
			   'type'  => 'inner',
		) 
	), 
	'where' => 'weekid=57 AND userid=8554' )

Конструкция выше аналогична нативному SQL запросу (используем джоин вместо вложенного подзапроса):

 

SELECT p.* FROM ibf_pickems_picks p INNER JOIN ibf_pickems_games g ON g.id=p.gameid WHERE weekid=57 AND userid=8554

При составлении запроса через конструктор, указывать префикс таблиц не нужно.

Для фетчинга одной записи:

 

$row = $this->DB->buildAndFetch( QUERY );

Для множество записей

 

$this->DB->build( QUERY );
$this->DB->execute();
while( $row = $this->DB->fetch() )

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

В шаблоне вообще размещать любые запросы

Почему? Базу сильно нагружают?

Поделиться сообщением


Ссылка на сообщение

Спасибо, все работает! База некрупная, посещаемость невысокая - нагрузка не должна сильно увеличиться

Поделиться сообщением


Ссылка на сообщение

Почему? Базу сильно нагружают?

Ну хотя бы потому что http://ipbskins.ru/forum/topic10752.html/page__view__findpost__p__69935

А говно запросом можно одинаково нагрузить базу как из шаблона, так и из скрипта. В шаблонах можно всунуть запрос в каком нибудь шаблоне, который крутится по циклу (тот же userInfoPane например) и нагенерировать кучу запросов на странице.

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

Почему? Базу сильно нагружают?

Потому что это шаблон.

Поделиться сообщением


Ссылка на сообщение

Полезная информация, спасибо.

 

А говно запросом можно одинаково нагрузить базу как из шаблона, так и из скрипта. В шаблонах можно всунуть запрос в каком нибудь шаблоне, который крутится по циклу (тот же userInfoPane например) и нагенерировать кучу запросов на странице.

А как можно просканировать форум на наличие таких тяжёлых запросов?

Поделиться сообщением


Ссылка на сообщение

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

На уровне сервера включено.

Решил последовать вашему совету и включить на форумном уровне:

define( 'IPS_SQL_FIND_SLOW_MODE', 0.5 );

А где отчёт просматривать на форумном уровне?

Поделиться сообщением


Ссылка на сообщение

На уровне сервера включено.

Тогда нет смысла делать это на форуме.

 

А где отчёт просматривать на форумном уровне?

В /cache/sql_slow_log_*.cgi

 

Оффтоп

Самое интересное, что автор там по сей день живет с тормозами в ип.контенте. Сам форум вроде работает у него бодро.

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...