MySql соединить таблицы - PullRequest
       10

MySql соединить таблицы

0 голосов
/ 15 августа 2011

у меня 3 стола,
jos_messages => 'message_id (PK)', 'message', 'from_user_id', 'touser id'

jos_message_thread => 'thread_id PK', 'message_id FK', 'from_user_id', 'to_user_id'

jos_users => 'user_id (FK)', 'firstname', 'avatar'

Мне нужно сделать запрос с этими таблицами, чтобы вернуть данные в одном результате, данные: последнее вставленное сообщение (jos_messages), имя и аватар отправителя сообщения (jos_users) результат должен быть примерно таким:

сообщение: «Привет, это последнее добавленное сообщение»

Имя: "ledif"

Аватар: "http://a.com/a.png"

Теперь у меня есть этот запрос, но проблема в том, что возвращаемое сообщение не является последним вставленным сообщением.

SELECT jmt.from_user_id, jm.message, ju.firstname, ju.avatar
FROM jos_messages_thread AS jmt
LEFT JOIN jos_messages AS jm ON jm.message_id = jmt.message_id
LEFT JOIN jos_comprofiler AS ju ON ju.user_id =     jmt.from_user_id
WHERE jmt.to_user_id ='$user_id'
AND jmt.thread_owner ='$user_id'
GROUP BY jmt.from_user_id

Есть ли способ ЗАКАЗАТЬ jm.message_id в середине левого запроса соединения? чтобы сделать что-то вроде:

LEFT JOIN jos_messages AS jm ON jm.message_id = (LAST INSERTED) jmt.message_id

Спасибо !! Кстати, я плохо знаю английский, извините, если мой вопрос не так ясен.

Ответы [ 2 ]

0 голосов
/ 15 августа 2011
LEFT JOIN jos_messages AS jm ON jm.message_id = (Select jthread.message_id from jos_messages_thread Order By jthread.message_id desc Limit 1)
0 голосов
/ 15 августа 2011

Вам не нужно вставлять ORDER BY в середине объединения, даже если был способ сделать это. Просто ORDER BY jm.message_id DESC в конце всего запроса и используйте LIMIT 1, чтобы ограничить результат первой строкой.

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