У меня есть следующая таблица для представления разговора между пользователями.Группа по другим комбинациям
message | user1 | user2 | unixtime
msg1 | 14 | 21 | -
msg2 | 21 | 12 | -
msg1 | 14 | 18 | -
msg3 | 14 | 21 | -
msg2 | 18 | 14 | -
msg4 | 21 | 12 | -
Я хочу, чтобы показать список из разговоров конкретного пользователя, выбрав все сообщения с current_user = user1 или user2. Пока этот SELECT выберет правильные сообщения, но группировка работает неправильно.
SELECT * FROM (
SELECT * FROM messages
WHERE user1 = '".$_SESSION['login']['ID']."'
OR user2 = '".$_SESSION['login']['ID']."'
ORDER BY unixtime DESC
) as list
GROUP BY user1, user2
ORDER BY unixtime DESC
Он будет группировать сообщения только с одним и тем же пользователем1 и пользователем2, а не если оба пользователя будут отменены. Выполняется ли это более сложной группировкой или мне нужно каким-то образом присоединиться к таблице?
можно сгруппировать по МИНИМУМ (user1, user2), БОЛЬШОЕ (user1, user2), но то, что вы пытаетесь сделать? вы выбираете все столбцы * и группируете всего два столбца. – fthiella