Перейти к содержимому
Русский язык для Invision Community 5

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

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

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

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

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

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

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

  • Автор

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

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

Ну хотя бы потому что 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

 

Оффтоп

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

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

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.