Синтаксис вложенных запросов - Дизайн и модификация Invision Power Board

Перейти к содержимому

 

Правила раздела

Здесь обсуждаются вопросы по настройке и администрированию форумов IPB 3.x.
Пожалуйста, не оффтопьте, если зашли сюда случайно, и обратите внимание на соседние разделы.
Установка, настройка и обслуживание форумов IPB 2.x.
Оформление форумов, включая верстку скинов.
Размещение рекламы на форумах.
SEO оптимизация форума.
Техническая поддержка наших скинов и модов.

СвернутьПрикрепленные теги

Теги не найдены

Страница 1 из 1

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

#1 Пользователь не на сайте   Kapralez ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 19
  • Регистрация: 31-Январь 12
  • Репутация: 0
  • IPB version:3.2.x
 

Отправлено 26 Ноябрь 2014 - 15:02

Чтобы не создавать новую тему...
Подскажите пожалуйста синтаксис вложенных запросов.
Есть прямой запрос к базе
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.*', и т.д ?
С простыми запросами проблем нет, а вот на этом споткнулся
Спасибо!
0

#2 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 245
  • Регистрация: 20-Март 09
  • Репутация: 2 061
  • IPB version:3.1.x
 

Отправлено 26 Ноябрь 2014 - 15:15

Просмотреть сообщениеKapralez сказал(а):

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

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

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

1

#3 Пользователь не на сайте   Haktar ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 611
  • Регистрация: 14-Июнь 09
  • Репутация: 14
  • IPB version:3.1.x
 

Отправлено 26 Ноябрь 2014 - 15:39

Просмотреть сообщениеsiv1987 сказал(а):

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

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

#4 Пользователь не на сайте   Kapralez ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 19
  • Регистрация: 31-Январь 12
  • Репутация: 0
  • IPB version:3.2.x
 

Отправлено 26 Ноябрь 2014 - 16:32

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

#5 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 245
  • Регистрация: 20-Март 09
  • Репутация: 2 061
  • IPB version:3.1.x
 

Отправлено 26 Ноябрь 2014 - 20:20

Просмотреть сообщениеHaktar сказал(а):

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

Ну хотя бы потому что http://ipbskins.ru/f...dpost__p__69935
А говно запросом можно одинаково нагрузить базу как из шаблона, так и из скрипта. В шаблонах можно всунуть запрос в каком нибудь шаблоне, который крутится по циклу (тот же userInfoPane например) и нагенерировать кучу запросов на странице.
1

#6 Пользователь не на сайте   danilka ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 131
  • Регистрация: 10-Март 10
  • Репутация: 6
  • IPB version:2.3.x
 

Отправлено 27 Ноябрь 2014 - 08:30

Просмотреть сообщениеHaktar 26 Ноябрь 2014 - 15:39 сказал(а):

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

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

#7 Пользователь не на сайте   Haktar ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 611
  • Регистрация: 14-Июнь 09
  • Репутация: 14
  • IPB version:3.1.x
 

Отправлено 27 Ноябрь 2014 - 17:48

Просмотреть сообщениеsiv1987 сказал(а):

Ну хотя бы потому что http://ipbskins.ru/f...dpost__p__69935

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

Просмотреть сообщениеsiv1987 сказал(а):

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

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

#8 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 245
  • Регистрация: 20-Март 09
  • Репутация: 2 061
  • IPB version:3.1.x
 

Отправлено 27 Ноябрь 2014 - 18:34

Включить логирования медленных запросов.
http://ipbskins.ru/f...topic12992.html
1

#9 Пользователь не на сайте   Haktar ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 611
  • Регистрация: 14-Июнь 09
  • Репутация: 14
  • IPB version:3.1.x
 

Отправлено 27 Ноябрь 2014 - 19:47

Просмотреть сообщениеsiv1987 сказал(а):

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

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

Цитата

define( 'IPS_SQL_FIND_SLOW_MODE', 0.5 );

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

#10 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 245
  • Регистрация: 20-Март 09
  • Репутация: 2 061
  • IPB version:3.1.x
 

Отправлено 27 Ноябрь 2014 - 22:02

Просмотреть сообщениеHaktar сказал(а):

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

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

Просмотреть сообщениеHaktar сказал(а):

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

В /cache/sql_slow_log_*.cgi

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

Сообщить об этой теме:


Страница 1 из 1


Быстрый ответ

  

1 пользователей читают эту тему
0 зарегистрированных, 1 гостей, 0 скрытых


Контактная информация

Вопросы по работе сайта

+7 (917) 501-4765
C 10 до 20 в рабочие дни (время московское)

Техническая поддержка

Контактные данные специалистов

Дизайн форумов

IPB 3.x ¦ IPB 2.x

Бесплатные шаблоны

IPB 3.2 – 3.4 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
Лицензия на использование ¦ Ваша поддержка ¦ О проекте
Copyright © 2005-2016 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна