2013-09-10 2 views
0

Я хотел бы получить новую строку в столбце, но мне нужно получить их, прежде чем группировать их друг с другом. Если я ставлю Order by after group, mysql упорядочивает их, которые они перед группировкой. (. Как facebook чат)MySQL группировка и получение новых строк

Что я пытался сделать, группируя сообщения для последних сообщений пользователя друг друга

Если клиент имел 3 беседы, он/она должны видеть список сообщений последнего диалога:

(Предположим, что мобильный ник пользователя Rob, и он перечисляет свою историю сообщений ...)

Rob -> Томас (Привет, я вернусь как можно скорее.)

Дайн -> Rob (Где вы?)

Rob -> Danilla (Как повторно вас?)

SELECT 
    u.userNickName, 
    u.userFBID, 
    m.didRead, 
    max(m.messageID) messageID, 
    m.messageContent, 
    m.srcUserID, 
    m.destUserID, 
    m.messageSendDate 
FROM 
users u, messages m 
WHERE 
(m.srcUserID='122' || m.destUserID ='122') 
AND 
u.userID = m.destUserID 
GROUP BY 
u.userNickName 

ответ

0

Я решил мой вопрос с помощью подзапросов и группы, с следующим заявлением SQL:

SELECT 
    u.userNickName, 
    u.userFBID, 
    m.didRead, 
    m.messageID, 
    m.messageContent, 
    m.srcUserID, 
    m.destUserID, 
    m.messageSendDate 
FROM 
    users u, 
    messages m 
WHERE 
    (u.userID = m.srcUserID or u.userID = m.destUserID) 
AND 
CASE 
    WHEN m.srcUserID='122' THEN u.userID= m.destUserID 
    WHEN m.destUserID ='122' THEN u.userID= m.srcUserID 
    ELSE -1 
END 
AND 
m.messageID in (select max(m.messageID) from users u, messages m where (u.userID = m.srcUserID or u.userID = m.destUserID) group by u.userNickName); 
0

Что вы ищете не group но LIMIT - вы можете заказать результат в порядке по убыванию в соответствии с датой и ограничьте ResultSet содержать последние 3 сообщения:

SELECT 
    u.userNickName, 
    u.userFBID, 
    m.didRead, 
    max(m.messageID) messageID, 
    m.messageContent, 
    m.srcUserID, 
    m.destUserID, 
    m.messageSendDate 
FROM 
users u, messages m 
WHERE 
(m.srcUserID='122' || m.destUserID ='122') 
AND 
u.userID = m.destUserID 
ORDER BY m.messageSendDate DESC 
LIMIT 3 
+0

Результатом будет 3 сообщения независимо от того, кто отправил это сообщение, я имею в виду, если первое сообщение принадлежит Rob-Thomas, пользователь не увидит другие сообщения. –

+0

@InnaKamoze Этот ответ относится к вашему вопросу, как он был поставлен, если у вас есть дополнительные ограничения - пожалуйста, объедините его в свой вопрос с соответствующими примерами. – alfasin

+0

Я просто попробовал ваш sql, И это сработало, что я сказал. Это просто fetct 3 строки без категоризации пользователей ... –

 Смежные вопросы

  • Нет связанных вопросов^_^