Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
Kapralez

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

Recommended Posts

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

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

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

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.*', и т.д ?

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

Спасибо!

Share this post


Link to post
Share on other sites
Хочу разместить данный запрос в шаблоне.

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

 

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

  • Upvote 1

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

 

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

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

Share this post


Link to post
Share on other sites

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

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

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

define( 'IPS_SQL_FIND_SLOW_MODE', 0.5 );

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

Share this post


Link to post
Share on other sites

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

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

 

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

В /cache/sql_slow_log_*.cgi

 

Оффтоп

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

  • Upvote 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...