php - Group by Latest entry and filter out with additional criterias -
table:
id sender receiver message 1 14 16 1st message 14 16 2 16 14 1st message 16 14 3 16 14 2nd message 16 14 4 14 16 2nd message 14 16 5 15 14 1st message 15 14 6 15 14 2nd message 15 14 7 14 16 3rd message 14 16 8 14 16 4th message 14 16 9 14 15 1st message 14 15 10 14 15 2nd message 14 15 now, trying here group messages 1 user (as receiver), problem i want latest entry regardless of sent message.
attempt 1:
select c2. * ( select max( id ) `id` tbl_msg group `sender` )c1 inner join tbl_msg c2 on c1.id = c2.id `receiver` =14 group `sender` result:
id sender receiver message 6 15 14 2nd message 15 14 3 16 14 2nd message 16 14 here result each last message sent user 14. won't include message sent by user 14.
again, can't use addtional group by on receiver, because include last entry sent by user 14.
expected output:
id sender receiver message 10 14 15 2nd message 14 15 8 14 16 4th message 14 16 now in above, sender in both entries 14, can user.
in simple words:,
i want retrieve last message in conversation between , b, regardless of said it.
is using group by here wrong approach?
n.b. questions below similiar question with exception deal 1 criteria. here, have 2 (i.e. user can either sender or receiver). part stuck at.
retrieving last record in each group
mysql - control row returned group by
try this,
select * tablename (least(sender, receiver),greatest(sender, receiver), id) in ( select least(sender, receiver) x, greatest(sender, receiver) y, max(id) max_id tablename group x, y ) output
╔════╦════════╦══════════╦═══════════════════════════╗ ║ id ║ sender ║ receiver ║ message ║ ╠════╬════════╬══════════╬═══════════════════════════╣ ║ 8 ║ 14 ║ 16 ║ 4th message 14 16 ║ ║ 10 ║ 14 ║ 15 ║ 2nd message 14 15 ║ ╚════╩════════╩══════════╩═══════════════════════════╝
Comments
Post a Comment