Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте есть таблица MESSAGES
В ней поля id, sender, addressee message, date
В поля sender и addressee записываются ID пользователей.
sender ид отправителя
addressee ид получателя
Мне нужно что бы при выборке выводило лишь по одной записи из всей переписки с пользователями
То есть 1 пользователь переписывается с другим пользователем
id | sender | addressee | message | date
1 2 1 привет 10.05.12
2 1 2 и тебе привет 11.05.12
3 2 1 как дела 11.05.12
4 1 2 нормально 11.05.12
Я пытался сформировать запрос так но он выдает не правильные данные он выводит все данные.
Отредактированно gheka (17.05.2012 23:23:21)
Неактивен
Здравствуйте.
Если по одному любому сообщению (в данном случае выбираем по отправителю), то можно так:
SELECT sender, max(message) FROM `messages` GROUP BY `sender`;
по приёмщику:
SELECT addressee, max(message) FROM `messages` GROUP BY `addressee`;
Если нужно и то и то - соедините результаты через union.
Неактивен
Да хороший пример, но есть проблемка, повторения записей как сделать так чтобы убрать повторяющиеся записи из выборки
То есть если
id | sender | addressee | message | date
1 2 1 привет 10.05.12
2 1 2 и тебе привет 11.05.12
выводит 2 раза то есть оба сообщения? Хотя в первом отправитель ид 2 а во втором случае получатель ид 2
Неактивен
Спасибо но тот пример схож но структура баз очень разные и из его решения построить на моём примере я не представляю как так как сам не совсем знаком mysql.
Если вам не сложно допишите пожалуйста.
Неактивен
Решил проблему всё оказалось намного проще.
Вот решение всей проблемы. Может каму пригодится.
Неактивен