SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 10.12.2011 18:13:18

Lagorden
Участник
Зарегистрирован: 10.12.2011
Сообщений: 1

Нужно выбрать по одному значению из нескольких столбцов. Как?

Я слабоват в MySQL, но нужно решение поскорее )
Суть такова - есть сайт, на котором пользователи оставляют свои сообщения (по типу микроблогов). Там есть общая лента, в которую валятся все сообщения от всех пользователей. Нужно же сделать, чтобы туда попадало только одно последнее сообщение от каждого пользователя. Никак не могу понять, как это ограничить.
Сейчас запрос выглядит так:

$q1    = 'SELECT COUNT(p.id) FROM posts p WHERE p.user_id<>0 AND p.api_id<>2 AND p.api_id<>6 '.$not_in_groups.$without_users;
$q2    = 'SELECT p.*, "public" AS `type` FROM posts p WHERE p.user_id<>0 AND p.api_id<>2 AND p.api_id<>6 '.$not_in_groups.$without_users.' ORDER BY p.id DESC ';


я так понимаю, что нужно прописывать что-то здесь? или я ошибаюсь? При необходимости могу предоставить весь файл

Неактивен

 

#2 13.12.2011 21:41:48

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Нужно выбрать по одному значению из нескольких столбцов. Как?

Вам нужно для каждого пользователя выбрать время последнего сообщения, а потом по этим данным получить текст сообщения, т.е. что-то вроде

select ..перечисление нужных вам полей.. from post p join
(select max(p.`поле содержащее время сообщения`) d, user_id from posts p group by user_id) t1
on p.user_id=t1.user_id and t1.d=p.`поле содержащее время сообщения`;

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson