Pregunta

I would like to get newest row in column , But i need to get them just before grouping them each other. If i put Order by after group by, mysql ordering them which they before grouped.

What i tried to do, grouping messages for user's last messages each other ( like a facebook chat . )

If client had a 3 conversations , he/she need to see message list as last dialog :

( Suppose that , the mobile user nickname is Rob, and he is listing his message history... )

Rob -> Thomas ( Hello, I will be back asap. )

Dyne -> Rob (Where are you ?)

Rob -> Danilla (How re you ?)

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
¿Fue útil?

Solución 2

I solved my question with using subquery and group by with following SQL Statement :

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);

Otros consejos

What you're looking for is not group but LIMIT - you can order the result in a desc order according to date and LIMIT the resultset to contain the last 3 messages:

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top