![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Gtaman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 10.4.2006 Репутация: нет Всего: нет |
Столкнулся со следующей проблемой:
На форуме нужно определить, являеться ли пользователь модератором на форуме. Модераторы - группы, занесенные в список модераторов. Вот структура таблицы групп: id | name таблица членов группы: group_id | user_id таблица модераторов: group_id | forum_id (Эту таблицу я планирую переделать под общую админку.... но смысл остаеться) так вот, нужно сделать выборку. Я делаю так, но выбираеться только группа, стоящая первая в таблице модераторов.....
|
|||
|
||||
| sayber |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 231 Регистрация: 30.7.2006 Где: Moscow - qwerty Репутация: нет Всего: нет |
Gtaman, А непроще все было в одной таблице сделать и одним запросом проверять?
--------------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~WoW CafeSayber © Портфолио ~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|||
|
||||
| Gtaman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 10.4.2006 Репутация: нет Всего: нет |
sayber, ну уж тогда проще ваще не на пхп писать, а создавать хтмл странички вручную..... типа надо модератору пост скрыть - обращаеться ко мне, а хтмл файл редактирую......
У меня тут не только форум. И группы - не чисто форумное. Чел вообще может не состоять не в какой группе, может состоять в 100 группах....... |
|||
|
||||
| sayber |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 231 Регистрация: 30.7.2006 Где: Moscow - qwerty Репутация: нет Всего: нет |
У меня тоже самое. Разные группы для разных вещей.
сайт+форум к примеру. --------------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~WoW CafeSayber © Портфолио ~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|||
|
||||
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 2 Всего: 71 |
Gtaman, что на выходе должно быть? Какие данные? Просто это всё можно сделать одним сложным запросом
-------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
| GiV |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 13.7.2006 Где: rus|53 Репутация: 1 Всего: 9 |
|
|||
|
||||
| AntonioBanderaz |
|
||||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 2 Всего: 18 |
В корне не верно. ты в SQL данные прям из гета кидаешь.... а SQL там вроде такой
таблица модераторов связана с таблицей членов группы по group_id, которая в свою очередь связана с таблицей юзеров по (user_id = id) если рекордсет не пустой то этот чувак есть модер если пустой то не модер. А вообще странная у тебя структупа БД. По хорошему надо немного не так. Таблица пользователей (М к N на роли и на группы ролей) Таблица групп (со связкой M к N на таблицу пользователей и M к N на роли и группы ролей) Таблица групп ролей (со звязками M к N на роли) Мой совет возьми какой-нидь Enterprise Architect и навояй свою базу. (UML - решает!!!) -------------------- ГЫ... |
||||
|
|||||
| GiV |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 13.7.2006 Где: rus|53 Репутация: 1 Всего: 9 |
AntonioBanderaz, а почему мне кажется что два маленьких запроса будут работать быстрее чем один сложный с соединением таблиц?
И так для справки. Никогда не следует указывать в части ON какие бы то ни было условия, накладывающие ограничения на строки в наборе результатов. Если необходимо указать, какие строки должны присутствовать в результате, следует сделать это в выражении WHERE.
|
|||
|
||||
| Gtaman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 10.4.2006 Репутация: нет Всего: нет |
GiV, вроде работает...... Спасибо!
|
|||
|
||||
| Gtaman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 10.4.2006 Репутация: нет Всего: нет |
GiV, блин, поспешил я радоваться...... работает только, модерирующая группа, в которой состоит чел стоит у него первой в списке групп......
|
|||
|
||||
| GiV |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 13.7.2006 Где: rus|53 Репутация: 1 Всего: 9 |
В таком случае запрос от AntonioBanderaz должен помочь.
|
|||
|
||||
| Gtaman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 10.4.2006 Репутация: нет Всего: нет |
Не помогает......
|
|||
|
||||
| AntonioBanderaz |
|
||||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 2 Всего: 18 |
Обоснуй. Я всегда думал что подключение таблиц идёт после отработки основного запроса, и запросы идёт быстрее.... тоесть в этом случае происходит сначала
А потом идёт подключение первой таблицы `таблица членов группы` tblGUsers на совпадении условия которое в ON и тп... Если бы разницы не было, тогда можно было просто всегда в From указывать имена таблиц через зпт. и они бы сначала все сджойнились, а потом уже шла выборка... Что случится если делать все условия в WHERE... )))) Если я не прав объясни ) -------------------- ГЫ... |
||||
|
|||||
| GiV |
|
||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 13.7.2006 Где: rus|53 Репутация: 1 Всего: 9 |
Это уже декартово произведение.
Вот что по тому поводу думает man (раздел по оптимизации):
INNER не делает последние два пункта. http://mysql.com/doc/refman/4.1/en/join.html
|
||||||||
|
|||||||||
| Gtaman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 10.4.2006 Репутация: нет Всего: нет |
AntonioBanderaz,
GiV, это конечно все интересно, но моя проблема не решена..... ни один запрос не помогает..... |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |