Я делаю небольшое веб-приложение для отправки SMS. Я должен показать пользователь своего последнее отправленного SMS (например, SMS-приложение в Android, прошивка ...)Получение последних сообщений получателями в приложении SMS - запрос SQL
Моих три таблиц:
--------- ----------- -----------
| users | | sms | | indexes |
--------- ----------- -----------
id id id
.. user_id user_id
receiver phone_n
created_at name
Я уже сделал запрос SQL, чтобы получить последние отправленные сгруппированные по имени/номеру телефона номера индексов:
SELECT S.receiver, S.message, I.name, temp.last_sent, I.id
FROM sms S
INNER JOIN (
SELECT receiver, user_id, MAX(created_at) AS last_sent
FROM sms
WHERE user_id = ?
GROUP BY receiver, user_id
) temp
ON S.receiver = temp.receiver
AND S.user_id = temp.user_id
AND S.created_at = temp.last_sent
LEFT OUTER JOIN indexes I ON S.receiver = I.phone_number WHERE I.user_id = ?
ORDER BY temp.last_sent DESC
Этот запрос SQL работает. Я получаю от имени получателя последнее SMS-сообщение, которое пользователь отправляет на него. Но я получаю только SMS, где приемник присутствует в таблице индексов. Все SMS, отправленные получателям, у которых не сохранены номера телефонов в этой базе данных, не отображаются.
Я знаю, что допустил ошибку с моим LEFT OUTER JOIN indexes
. Но
Так как я могу получить последнее SMS, отправленное получателями, заказанное last_sent, с сохраненными номерами телефонов или нет в индексах?
Спасибо.
работает как шарм, спасибо Вам! – netvision73
Вы скалы @ Kickstart – EpokK