Задать вопрос
mannaro
@mannaro
Умею профессионально гуглить

Выборка из БД

Здравствуйте! У меня есть такая таблица БД:
CREATE TABLE `dialogs` (
    `id` int(255) AUTO_INCREMENT,
    `to` int(255),
    `from` int(255),
    `message` text,
    `date` varchar(255),
    `read` int(1) default '0',
    PRIMARY KEY (`id`)
)

К сожалению, проектировал ее не я и изменять что либо в MySQL я не могу.

Например, у меня в таблице содержатся такие записи:
+----+------+------+-----------+------------+------+
| id | to   | from | message   | date       | read |
+----+------+------+-----------+------------+------+
|  1 |    1 |    2 | Hello =)  | 1379616725 |    0 |
|  2 |    2 |    1 | World.    | 1379616743 |    1 |
|  3 |    1 |    2 | Push me)) | 1379616749 |    0 |
|  4 |    2 |    1 | World.    | 1379616743 |    1 |
|  5 |    5 |    6 | World.    | 1379616743 |    1 |
|  6 |    1 |    5 | World.    | 1379616743 |    1 |
+----+------+------+-----------+------------+------+

Мне нужно сделать выборку, чтобы я получил все поля, где `to`='2'. Загвоздка в том, что поле from должно быть уникальным (т.е. мне не нужно получать всю переписку между 1 и 2 пользователем, а достаточно 1 их сообщения).
Прошу прощения за сумбурное объяснение задачи.
После выборки я должен получить что-то типа:
+----+------+------+-----------+------------+------+
| id | to   | from | message   | date       | read |
+----+------+------+-----------+------------+------+
|  1 |    1 |    2 | Hello =)  | 1379616725 |    0 |
|  6 |    1 |    5 | World.    | 1379616743 |    1 |
+----+------+------+-----------+------------+------+

Для выборки, где `to`='1'

И
+----+------+------+-----------+------------+------+
| id | to   | from | message   | date       | read |
+----+------+------+-----------+------------+------+
|  2 |    2 |    1 | World.    | 1379616743 |    1 |
+----+------+------+-----------+------------+------+

Для выборки, где `to`='2'

Можно, конечно, загрузить все, а затем пройтись циклом и убрать лишнее, но, я думаю, это не самый рациональный способ :)
  • Вопрос задан
  • 4072 просмотра
Подписаться 4 Оценить Комментировать
Решения вопроса 1
BuriK666
@BuriK666
Компьютерный псих
select * from `tablename` where `to`=1 group by from
так?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@DenKrep
select from, count(*) from dialogs where to = 1 group by from;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы