Как явно указать индекс для SQL запроса? - Дизайн и модификация Invision Power Board

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

 

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

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

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

Как явно указать индекс для SQL запроса?

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

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

Отправлено 18 Март 2019 - 13:48

Приветствую.

Пытаюсь получить данные с такого запроса:

{{$feedback_author_count = \IPS\Db::i()->select( 'COUNT(*)', 'cms_custom_database_1', array( 'member_id=? and record_approved=?', $record->author()->member_id, 1 ) )->first();}}


Будет ошибка: Column 'member_id' in where clause is ambiguous

Если гуглить, выясняется, что нужно указать из какой конкретно таблицы брать данные. Пробовал вот так:

{{$feedback_author_count = \IPS\Db::i()->select( 'COUNT(*)', 'cms_custom_database_1', array( 'cms_custom_database_1.member_id=? and record_approved=?', $record->author()->member_id, 1 ) )->first();}}


Тоже самоеб удет, если пытаться сортировать по primary_id_field.

Вроде запрос синтаксически верный, но не обрабатываются IPB. Подскажите, что делать с такими колонками в базе данные?
0

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

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

Отправлено 18 Март 2019 - 15:42

Откуда там надо указать явное поле, если используется одиночный селект из одной таблицы без джойнов.
Не может быть такая ошибка в этом запросе, потому что тут только одно поле с member_id.
0

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

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

Отправлено 18 Март 2019 - 22:04

Вы правы. Ошибка была в другой строке. Для тех, кто будет после меня вот решение. Вот так не работает:

{{$table = new \IPS\Helpers\Table\Content('IPS\cms\Records1', $record->url(), array(array(\IPS\Db::i()->findInSet('member_id', array($record->author()->member_id)))));}}


И отдает ошибку:

А вот так работает:

{{$table = new \IPS\Helpers\Table\Content('IPS\cms\Records1', $record->url(), array(array(\IPS\Db::i()->findInSet('cms_custom_database_1.member_id', array($record->author()->member_id)))));}}


Вся суть здесь в cms_custom_database_1.member_id и становится лучше, потому что указываем в какой конкретно таблице использовать колонку member_id.
0

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

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

Отправлено 18 Март 2019 - 22:24

Мне одно не понятно, почему \IPS\Db::i()->findInSet если значение $record->author()->member_id это не сет? Нельзя разве просто указать table.member_id = $record->author()->member_id?

В вашем случае можно использовать

array( array( \IPS\cms\Records1::$databaseTable.'.member_id = ?', $record->author()->member_id ) )

0

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

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

Отправлено 18 Март 2019 - 22:54

Спасибо, предложенный вариант тоже работает и подошел кстати в некоторых других местах моего проекта!
0

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


Страница 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-2019 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна