Jake Badland
Новичок
Доброго времени суток)
Задача в том, чтобы для одного оператора по привязанным профилям вытащить последние сообщения и к ним притянуть информацию о пользователе с которыми общался профиль..
Проблема в том, что пользователь может общаться одновременно с несколькими профилями. Вот по сути мне не удаётся сгруппировать таким образом, чтобы получить не только каждое сообщение от юзера, но и к каждому профилю. Интересуют только исходящие сообщения (messages.direction = 'out')
условно operator_id = 1
Есть таблица по привязке операторов к профилям:
operators_to_profiles
id, operator_id, profile_id
Таблица с сообщениями:
id, operator_id, profile_id, user_id, text, direction, created_at
Запрос на данный момент:
Возможно есть другой вариант решения.
Буду весьма благодарен за помощь)
ЗЫ. тут есть какой - то мануал по подсветке синтаксиса?) И хоть немного форматирования?)
Задача в том, чтобы для одного оператора по привязанным профилям вытащить последние сообщения и к ним притянуть информацию о пользователе с которыми общался профиль..
Проблема в том, что пользователь может общаться одновременно с несколькими профилями. Вот по сути мне не удаётся сгруппировать таким образом, чтобы получить не только каждое сообщение от юзера, но и к каждому профилю. Интересуют только исходящие сообщения (messages.direction = 'out')
условно operator_id = 1
Есть таблица по привязке операторов к профилям:
operators_to_profiles
id, operator_id, profile_id
Таблица с сообщениями:
id, operator_id, profile_id, user_id, text, direction, created_at
Запрос на данный момент:
SQL:
SELECT *
FROM operators_to_profiles AS otp
INNER JOIN messages ON messages.profile_id = otp.profile_id
INNER JOIN users ON messages.user_id = users.id
INNER JOIN (
SELECT MAX(created_at) AS MaxMessDate, messages.user_id
FROM operators_to_profiles
INNER JOIN messages ON messages.profile_id = operators_to_profiles.profile_id
WHERE
messages.direction = 'out'
AND operators_to_profiles.operator_id = 1
GROUP BY messages.user_id #вот как тут сгруппировать, чтобы получить не только уникальных пользователей? т.е. уникальные urer_id <->profile_id
) AS temp
ON (temp.user_id = messages.user_id
AND messages.created_at = temp.MaxMessDate)
WHERE otp.operator_id = 1
AND messages.direction = 'out'
Буду весьма благодарен за помощь)
ЗЫ. тут есть какой - то мануал по подсветке синтаксиса?) И хоть немного форматирования?)
Последнее редактирование: