Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
nkostya 28.05.2010 21:15
Здравствуйте. Нужна ваша подсказка в оптимизации запроса или советы по изменению структуры БД. Прошу прощения, что написал в этот форум, но тут много умных людей, надеюсь на вашу помощь.user: user_id, name... friendship: friendship_id, user_id, friend_user_id... message: message_id, parent_message_id, user_id, op_user_idparent_message_id - id родительского сообщения
SELECT * FROM message JOIN user ON (user.user_id = message.user_id) LEFT JOIN user AS op_user ON (op_user.user_id = message.op_user_id) WHERE user_id = $self.user_id ^if($user_friends){OR (user_id IN (^foreach[$user_friends;f]{$f.friend_user_id}[,]) AND op_user_id IN (0, $self.user_id ^foreach[$user_friends;f]{, $f.friend_user_id}))}Да, OR использовать в выражении плохо. Можно заменить на 2 запроса SELECT через JOIN.