Skip to content

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

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

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

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

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

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

Спасибо!

Featured Replies

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

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

 

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() )

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

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

  • Author

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

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

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

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

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

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

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

 

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

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

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

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

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

define( 'IPS_SQL_FIND_SLOW_MODE', 0.5 );

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

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

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

 

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

В /cache/sql_slow_log_*.cgi

 

Оффтоп

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

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.