МАКС () SQL не работает

привет у меня есть эта ведьма SQL, как, предполагается, дает мне , макс. (сообщения message_id) таким образом, у меня есть отчет, где первое message_id равняется 7, и последнее message_id равняется 10, но вместо того, чтобы дать мне 10 это дает мне 7..., это полностью игнорирует МАКСА (сообщения message_id) и дает мне первое message_id ... какие-либо предложения о том, как зафиксировать это?

SELECT
  profile.first_name,
  profile.last_name,
  conversations.conversation_hash,
  conversations.person_a,
  conversations.person_b,
  messages.conversation_hash,
  MAX(messages.message_id),
  messages.message,
  messages.subject,
  messages.date
FROM conversations
  INNER JOIN messages
    ON conversations.conversation_hash = messages.conversation_hash
  INNER JOIN profile
    ON profile.id = conversations.person_b
WHERE conversations.person_a = '$id'
GROUP BY messages.conversation_hash
ORDER BY messages.message_id DESC

столы: разговоры:

conversation_id | conversation_hash | person_a | person_b |

сообщения:

conversation_hash | from_id | to_id | message_id | subject | message | date
1
nl ja de
Вы могли поставлять определения стола?
добавлено автор Jester, источник
попытайтесь сделать макс. только на сообщениях стола без соединений. Cos mybe макс. отчет отфильтрован условиями объединения
добавлено автор Jester, источник
вы хотите получить последний отчет для каждого разговора? или вам только интересно на ID ?
добавлено автор John Woo, источник
можно ли предоставить типовому столу отчеты? легче построить вопрос, если им дали вдоль вопроса:)
добавлено автор John Woo, источник
Проверьте, есть ли у стола "сообщения" отчет для message_id, больше, чем 7.
добавлено автор Darzen, источник
хорошо я хочу получить последний отчет от каждого разговора
добавлено автор Eduardop911, источник

2 ответы

Можно отдельно получить последнее message_id от стола , сообщения в подвопросе и результате его являются тогда соединением назад против столов при условии, что он соответствует на двух условиях: conversation_hash и message_id .

Полный вопрос:

SELECT  profile.first_name,
        profile.last_name,
        conversations.conversation_hash,
        conversations.person_a,
        conversations.person_b,
        messages.*
FROM    conversations
        INNER JOIN messages
            ON conversations.conversation_hash = messages.conversation_hash
        INNER JOIN  
        (
            SELECT  conversation_hash, MAX(message_id) max_ID
            FROM    messages
            GROUP   BY conversation_hash
        ) c ON messages.conversation_hash = c.conversation_hash AND
                messages.message_id = c.max_ID
        INNER JOIN profile
            ON profile.id=conversations.person_b
WHERE   conversations.person_a='$id'
ORDER   BY messages.message_id DESC
1
добавлено
@sgeddes ORDER BY дополнительный. но смотря на OP' s исходный запрос, , возможно он все еще хочет к заказ результат сообщения message_id в порядке убывания.
добавлено автор John Woo, источник
you' приветствие ре : D
добавлено автор John Woo, источник
Взгляды точно так же, как мой - don' t думают, что вам нужен ORDER BY все же.
добавлено автор sgeddes, источник
Gotcha - моими предположениями была OP, используемая это, чтобы попытаться заставить МАКСА в SQL работать. Никакие заботы...
добавлено автор sgeddes, источник
спасибо это работает: D
добавлено автор Eduardop911, источник

Попробуйте что-то вроде этого:

SELECT
    profile.first_name,
    profile.last_name,
    conversations.conversation_hash,
    conversations.person_a,
    conversations.person_b,
    messages.conversation_hash, 
    messages.message_id,
    messages.message, 
    messages.subject, 
    messages.date
FROM conversations
INNER JOIN (SELECT MAX(message_id) as maxMessageId, conversation_hash 
            FROM messages
            GROUP BY conversation_hash) m 
       ON conversations.conversation_hash=m.conversation_hash
    INNER JOIN messages
        ON conversations.conversation_hash=messages.conversation_hash AND message.message_id = m.maxMessageId
    INNER JOIN profile
       ON profile.id=conversations.person_b
    WHERE conversations.person_a='$id'

Удачи.

1
добавлено
Похож я оставил "s" прочь сообщений: "И сообщение message_id = m.maxMessageId" - хорошая выгода.
добавлено автор sgeddes, источник
жаль я проверил этого, и я получил ошибку SQL, я полагаю, что что-то неправильно в здесь.
добавлено автор Eduardop911, источник
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

MySQL
MySQL
995 участник(ов)

The group is about MySQL. For code use hastebin.com. Admin: @smlkw

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

SqlCom.ru - Стиль жизни SQL
SqlCom.ru - Стиль жизни SQL
908 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только MS SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz). Предложения в @sql_ninja

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

SQL_Ninja
SQL_Ninja
340 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz)

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp