mysql — Как мне создать & quot; Недавнюю активность & quot; Раздел с использованием PHP и SQL?

Я пытаюсь создать раздел недавних действий для страницы профиля пользователя.
Для этого примера у меня есть 3 таблицы.

Одним из них является таблица пользователя

+-------------+--------------+-------------+
:  user_id    :   username   :  join_date  :
+-------------+--------------+-------------+
:     1       :   myacct     :  2018-01-02 :
+-------------+--------------+-------------+
:     2       :   johndoe    :  2018-01-05 :
+-------------+--------------+-------------+

Во-вторых, таблица blog_post

+-------------+--------------+-------------+-----------+-----------+
:    id       :   author_id  :  title      :  content  : post_date :
+-------------+--------------+-------------+-----------+-----------+
:    1        :      2       :  Some stuff : I like... : 2018-01-05:
+-------------+--------------+-------------+-----------+-----------+
:    2        :      1       :  My Title   : This i... : 2018-01-04:
+-------------+--------------+-------------+-----------+-----------+

Третий ответ

+-------------+--------------+-------------+-----------+-----------+
:    id       :   auth_id    :  headline   : content   : rep_date  :
+-------------+--------------+-------------+-----------+-----------+
:    1        :      1       :  thanks     : Nice p... : 2018-01-04:
+-------------+--------------+-------------+-----------+-----------+

То, что я хочу сделать, это получить все из столбца blog_posts.title и все из столбца replies.headline (группировать результаты в целом), где author_id и auth_id соответствуют user_id. Тогда я хочу заказать его по датам по убыванию. Обратите внимание, что столбцы даты и для blog_posts, и для таблицы ответов называются по-разному (как и в моих реальных обстоятельствах). Затем я хочу ограничить свои результаты на 3 (следовательно, причина в «недавних» действиях).

Я попытался использовать UNION ALL с некоторым успехом. Хотя он группирует все из одной таблицы, затем следуют другие таблицы. Кроме того, я был озадачен получением его в PHP с помощью цикла while и функции fetch_object ().

0

Решение

Попробуйте что-то вроде этого …

SET ROWCOUNT 3
select username, title, post_date, type
from
(
select username, title, post_date, 'blog post' as "type"from blog_post b
join users u on u.user_id = b.author_id

union all

select username, headline as "title", rep_date as "post_date", 'reply' as "type"from replies r
join users u on u.user_id = r.auth_id
) as FullQuery
order by post_date desc
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]