行の最新の日付を取得するためにこのサブクエリを機能させる方法がわかりません。
SELECT Thread_Heading.*, Thread_Articles.*, Thread_ArticlesPost.*
FROM Thread_Heading
LEFT JOIN Thread_Articles
ON Thread_Articles.Thread_Article_Head_id=Thread_Heading.Thread_Head_id
LEFT JOIN
(
SELECT Thread_ArticlesPost.*
FROM Thread_ArticlesPost
ORDER BY Thread_ArticlePost_DT DESC
) Thread_ArticlesPost
ON Thread_ArticlesPost.Thread_ArticlePost_Article_id=Thread_Articles.Thread_Article_id
WHERE Thread_Head_Level = '5'
GROUP BY Thread_Heading.Thread_Head_id
ORDER BY Thread_ArticlePost_DT DESC
各スレッド記事の最新の投稿で記事の投稿日を並べ替える必要があります。SQLとPHPにかなり慣れていないので、これを解決できません。助けていただければ幸いです。
T
ABLE: Thread_Heading |
Thread_Head_id
Thread_Head_Name
Thread_Head_Type
Thread_Head_Creator
Thread_Head_Date
Thread_Head_Level
TABLE: Thread_Articles |
Thread_Article_id
Thread_Article_Head_id
Thread_Article_Creator
Thread_Article_DT
Thread_Article_Level
Thread_Article_Type
Thread_Article_Title
TABLE: Thread_ArticlesPost |
Thread_ArticlePost_id
Thread_ArticlePost_Head_id
Thread_ArticlePost_Article_id
Thread_ArticlePost_Creator
Thread_ArticlePost_DT
Thread_ArticlePost_Level
Thread_ArticlePost_Type
Thread_ArticlePost_Title
Thread_ArticlePost_Content
次のように日付を表示する必要があります。
Head Name | Article title | ORDER BY LATEST ArticlePost DT | ArticlePost Creator
左結合を使用した理由は、記事や記事の返信がない場合でも左のデータを取得するためでした。
助けに感謝します。
これを使用してデータを表示しました ブルーのおかげで
SELECT *
FROM
( SELECT th.Thread_Head_Name,
ta. , tp1.maxdate, tp2.
FROM Thread_Heading th LEFT JOIN Thread_Articles ta ON th.Thread_Head_id = ta.Thread_Article_Head_id LEFT JOIN
( SELECT max(Thread_ArticlePost_DT) maxDate,
Thread_ArticlesPost.* FROM Thread_ArticlesPost GROUP BY Thread_ArticlePost_Article_id ) tp1 ON tp1.Thread_ArticlePost_Article_id=ta.Thread_Article_id
LEFT JOIN Thread_ArticlesPost tp2 ON tp1.Thread_ArticlePost_Article_id = tp2.Thread_ArticlePost_Article_id AND tp1.maxdate = tp2.Thread_ArticlePost_DT
WHERE th.Thread_Head_Level = '5' ORDER BY tp1.maxdate DESC) m GROUP BY Thread_Head_Name ORDER BY Thread_ArticlePost_DT DESC