投稿に関連するコメントから最大日付を取得することとは別に、うまく機能しているクエリがあります。
だから私がやろうとしていることは次のとおりです:
- 関係: 1 つの投稿と多くのコメント
- max() を使用して UNIX_TIMESTAMP() で各投稿の「最新のコメント日」を取得します
- 「最新の投稿日」または「最新のコメント日」のいずれかでクエリ全体を並べ替えます。そのため、行ごとに「最新の投稿日」または「最新のコメント日」で並べ替えます。
- したがって、一番上のレコードは、最新の投稿か、または投稿にコメントがある場合は、一番上に移動するすべての投稿です。
どんな助けでも大歓迎です。
最大の最新コメント日付を取得せずに機能し、最新でソートするクエリ
SELECT DISTINCT wallposts.p_id,wallposts.type,wallposts.value,wallposts.media,wallposts.youtube,wallposts.post_type,wallposts.tagedpersons,wallposts.title AS thetitle,wallposts.url,wallposts.description,wallposts.cur_image,wallposts.uip,wallposts.likes,wallposts.userid,wallposts.posted_by,wallposts.post as postdata,wallusers.*, UNIX_TIMESTAMP() - wallposts.date_created AS TimeSpent,wallposts.date_created,wallposts.course
FROM wallposts,wallusers
where (
wallposts.userid =4276 OR
wallposts.tagedpersons LIKE '%4276%' OR
EXISTS (SELECT * FROM wallcomments WHERE wallposts.p_id = wallcomments.post_id AND wallcomments.tagedpersons LIKE '%4276%')
)
AND wallusers.mem_id = wallposts.userid
order by wallposts.p_id desc
問題を解決しようとしたが失敗したもの:
SELECT DISTINCT wallposts.p_id,wallposts.type,wallposts.value,wallposts.media,wallposts.youtube,wallposts.post_type,wallposts.tagedpersons,wallposts.title AS thetitle,wallposts.url,wallposts.description,wallposts.cur_image,wallposts.uip,wallposts.likes,wallposts.userid,wallposts.posted_by,wallposts.post as postdata,wallusers.*, UNIX_TIMESTAMP() - wallposts.date_created AS TimeSpent,wallposts.date_created,wallposts.course
FROM wallposts,wallusers
JOIN wallusers wu on wallposts.userid = wu.mem_id
LEFT JOIN wallcomments wc ON wc.post_id(SELECT date_created as commentdate_created, UNIX_TIMESTAMP() - max(date_created) as latestcomment
FROM wallcomments wc WHERE wallposts.p_id = wc.post_id LIMIT 1)
where (
wallposts.userid = 4276 OR
wallposts.tagedpersons LIKE '%4276%' OR
EXISTS (SELECT * FROM wallcomments WHERE wallposts.p_id = wallcomments.post_id AND wallcomments.tagedpersons LIKE '%4276%')
)
order by greatest(latestcomment, TimeSpent) DESC