| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Базы Данных > Как лучше сделать выборку? |
| Автор: Gtaman 30.7.2006, 18:34 | ||
| Столкнулся со следующей проблемой: На форуме нужно определить, являеться ли пользователь модератором на форуме. Модераторы - группы, занесенные в список модераторов. Вот структура таблицы групп: id | name таблица членов группы: group_id | user_id таблица модераторов: group_id | forum_id (Эту таблицу я планирую переделать под общую админку.... но смысл остаеться) так вот, нужно сделать выборку. Я делаю так, но выбираеться только группа, стоящая первая в таблице модераторов.....
|
| Автор: sayber 31.7.2006, 01:02 |
| Gtaman, А непроще все было в одной таблице сделать и одним запросом проверять? |
| Автор: Gtaman 31.7.2006, 01:56 |
| sayber, ну уж тогда проще ваще не на пхп писать, а создавать хтмл странички вручную..... типа надо модератору пост скрыть - обращаеться ко мне, а хтмл файл редактирую...... У меня тут не только форум. И группы - не чисто форумное. Чел вообще может не состоять не в какой группе, может состоять в 100 группах....... |
| Автор: sayber 31.7.2006, 02:58 |
| У меня тоже самое. Разные группы для разных вещей. сайт+форум к примеру. |
| Автор: Gold Dragon 31.7.2006, 06:55 |
| Gtaman, что на выходе должно быть? Какие данные? Просто это всё можно сделать одним сложным запросом |
| Автор: GiV 31.7.2006, 11:14 | ||
|
| Автор: GiV 31.7.2006, 12:10 | ||
| AntonioBanderaz, а почему мне кажется что два маленьких запроса будут работать быстрее чем один сложный с соединением таблиц? И так для справки. Никогда не следует указывать в части ON какие бы то ни было условия, накладывающие ограничения на строки в наборе результатов. Если необходимо указать, какие строки должны присутствовать в результате, следует сделать это в выражении WHERE.
|
| Автор: Gtaman 31.7.2006, 20:46 |
| GiV, вроде работает...... Спасибо! |
| Автор: Gtaman 31.7.2006, 21:01 |
| GiV, блин, поспешил я радоваться...... работает только, модерирующая группа, в которой состоит чел стоит у него первой в списке групп...... |
| Автор: GiV 31.7.2006, 21:08 |
| В таком случае запрос от AntonioBanderaz должен помочь. |
| Автор: Gtaman 31.7.2006, 21:52 |
| Не помогает...... |
| Автор: AntonioBanderaz 1.8.2006, 11:15 | ||||
Обоснуй. Я всегда думал что подключение таблиц идёт после отработки основного запроса, и запросы идёт быстрее.... тоесть в этом случае происходит сначала
А потом идёт подключение первой таблицы `таблица членов группы` tblGUsers на совпадении условия которое в ON и тп... Если бы разницы не было, тогда можно было просто всегда в From указывать имена таблиц через зпт. и они бы сначала все сджойнились, а потом уже шла выборка... Что случится если делать все условия в WHERE... )))) Если я не прав объясни ) |
| Автор: GiV 1.8.2006, 11:46 | ||||||||
Это уже декартово произведение.
Вот что по тому поводу думает man (раздел по оптимизации):
INNER не делает последние два пункта. http://mysql.com/doc/refman/4.1/en/join.html
|
| Автор: Gtaman 1.8.2006, 17:18 |
| AntonioBanderaz, GiV, это конечно все интересно, но моя проблема не решена..... ни один запрос не помогает..... |
| Автор: GiV 2.8.2006, 13:00 | ||
|
| Автор: AntonioBanderaz 3.8.2006, 12:23 |
| Может у тебя связка кривая?..... |
| Автор: Gtaman 3.8.2006, 18:07 |
| Не помогает..... пишет: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in z:\home\game.ru\www\posts.php on line 87 Если в нам вставлять, то же пишет.... Добавлено @ 18:08 Хотя все таблицы, все поля указаны правильно! |
| Автор: GiV 3.8.2006, 22:18 |
| Возьмите запросы. Вставьте их в phpMyAdmin например и посмотрите как они работают. После этого уже пишите код, а не просто вставляйте запросы в какую то часть программы, методом тыка - это не правильно. |
| Автор: Gtaman 3.8.2006, 23:29 |
| Так..... в пма все работает........... Скопировал код с "Создать PHP-код", вставил в первый запрос, где определяеться модераторы, вроде все работает |