Всем привет, знаете, бывают такие моменты, когда ты понимаешь, что у тебя перегруз, и ты не можешь решить казалось бы уже элементарную задачу...
Вопрос в следующем, смотрите, есть таблица:
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Идентификатор',
`component` varchar(255) NOT NULL COMMENT 'Имя компонента',
`page_id` int(11) NOT NULL COMMENT 'Идентификатор страницы',
`user` int(11) NOT NULL COMMENT 'Пользователь',
`text` text NOT NULL COMMENT 'Текст',
`datetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Дата и время создания',
И мне необходимо следующее, допустим, пользователь под идентификатором 1 прокомментировал какую-то публикацию, как он узнает, что после него, эту новость прокомментировал ещё кто-то?
Т.е. как мне обратиться к таблице, необходимо что-то следующее:
`user` = '1' AND "кроме него публикацию комментировал ещё кто то, но вывести тех, кого нет в таблице с уведомленными комментариями"...
Огромнейшее спасибо за любую помощь!
--- --- --- --- ---
Вот получилось нечто такое, обсудим?
select `b`.*
from `f_comments` as `a`
left join `f_comments` as `b`
on `a`.`page_id` = `b`.`page_id`
where `a`.`component` = 'publications' and `a`.`user` = '1' and `b`.`user` != '1'
group by `a`.`page_id`, `b`.`user`
--- --- --- --- ---
Ура, мозг заработал, вот правильный запрос:
select *
from `f_comments`
where `user` != '1' and `id` in (select max(`id`) from `f_comments` group by `page_id`)
order by `datetime` desc
P.S. Как и предполагалось, запрос должен был иметь простой вид, всем спасибо!