BRat
o_0
Нужна помощь с запросом
Есть такой запрос - он должен извлекать из таблицы msg все общие сообщения, и приватные сообщения для|от конретного пользователя. в таблице msg хранится информация о сообщении, в senders - кто отправил, кому отправлено, а в users - инфа о юзере.
senders:
Соотвественно проблема запроса в том, что приватные сообщения извлекаются некорректно, а именно - из таблицы senders извлекается только одна запись - с sender.user_id={$this->id}. Можно ли каким-нибудь образом перестроить запрос так, чтобы извлекались все записи?
PS. Хм, нашел еще один недочет в запросе - LIMIT 50 выберет не 50 сообщений, а 50 юзеров, т.е. видимо спасет меня только разбиение запроса на два
PHP:
SELECT *, msg.date as msg_date FROM #__msgs AS msg
LEFT JOIN #__senders AS sender
ON msg.id=sender.msg_id
LEFT JOIN #__users AS user
ON sender.user_id = user.id
WHERE msg.is_private=0 OR (msg.is_private=1 AND sender.user_id={$this->id})
ORDER BY msg.id DESC
LIMIT 50
senders:
PHP:
Field Type Null Key Default Extra Privileges
--------- --------------------- ------ ------ ------- -------------- -------------------------------
id mediumint(8) unsigned PRI (NULL) auto_increment select,insert,update,references
msg_id mediumint(8) unsigned MUL 0 select,insert,update,references
user_id smallint(5) unsigned MUL 0 select,insert,update,references
user_role enum('from','to') YES (NULL) select,insert,update,references
PS. Хм, нашел еще один недочет в запросе - LIMIT 50 выберет не 50 сообщений, а 50 юзеров, т.е. видимо спасет меня только разбиение запроса на два