RIGHT JOIN не возвращает правильное количество строк - PullRequest
0 голосов
/ 10 сентября 2011
$sql="SELECT MAX(mr.messageId) AS maxMessageId, mr.threadId 
      FROM messages_recipients AS mr
      RIGHT JOIN thread_recipients AS tr ON tr.threadId=mr.threadId
      WHERE mr.recipientUserId='2'
      GROUP BY mr.threadId";

Если вышеупомянутый SELECT должен найти строку в message_recipients с threadId 1 и thread_recipients имеет несколько строк с threadId = 1 .. тогда, потому что у меня есть право присоединиться, Я ожидаю, что он вернет столько строк, сколько строк в thread_recipients, где threadId = 1

Однако он возвращает только одну строку независимо от того ... Можете ли вы сказать мне, почему это происходит?

1 Ответ

0 голосов
/ 10 сентября 2011

Правое соединение означает, что будут возвращены все строки в объединенной таблице, а все несоответствующие строки в правой таблице заполнены нулями в левой таблице.

Я не вижу причин, почему вы не используете вместо этого внутреннее соединение?

Причина, по которой вы возвращаете только одно значение, заключается в том, что вы группируете по mr.threadid. Если все строки имеют идентификатор потока = 1, то группа по сгруппирует их в одну строку.

Я неправильно понял вопрос?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...