Вопрос по mysql, php, database – Получение последней заметки (по метке времени) в одном запросе из таблицы 1: n
Допустим, у меня есть две таблицы: пользователи и заметки. Допустим, схемы выглядят так:
users
id, name, field2, field3
notes
id, user_id, subject, heading, body, timestamp
Что я хочу сделать, это выбрать каждого пользователя, и последняя (только 1) заметка, опубликованная каждым пользователем, основана на отметке времени, отображаемой в обзорном отчете.
Как мне это сделать? Обратите внимание, что БД - MySQL.
Благодарность
Возможная копия Как мне присоединиться к последней записи в таблице?
user9645477
Может стоит посмотреть на это: / Stackoverflow.com вопросы / 881198 / ...
Tom Haigh
3
ответа
select users.name, notes.subject, notes.heading, notes.body
from users, notes
where users.id = notes.user_id
and notes.timestamp = (select max(timestamp) from notes where user_id = users.id)
Я закончил тем, что использовал этот ответ. Мне нужно было внести несколько изменений, но в итоге это сработало! Благодарность
hellopat
select u.id, u.name, n.id as note_id, n.subject, n.heading, n.body, n.timestamp
from users u
left outer join (
select user_id, max(timestamp) as timestamp
from notes
group by user_id
) nm
left outer join notes n on nm.user_id = n.user_id and nm.timestamp = n.timestamp
что это потенциально может вернуть дубликаты, если у пользователя есть две заметки с одинаковой отметкой времени. Я предположил, что это не так.
Похожие вопросы
Возможная копия<a href="https://stackoverflow.com/questions/881198/how-do-i-join-to-the-latest-record-in-the-table"> Как мне присоединиться к последней записи в таблице?</a>
Может стоит посмотреть на это:<a href="http://stackoverflow.com/questions/881198/how-do-i-join-to-the-latest-record-in-the-table"> / Stackoverflow.com вопросы / 881198 / ...</a>