これが繰り返しである場合は申し訳ありませんが、私の質問はかなり具体的であるため、本当に私の質問に答えるものは何も見つかりません.
私は php と mysql を使用してフォーラムを作成していますが、これまでのところうまくいっていますが、最新の投稿の日付に基づいて各カテゴリのスレッドを並べ替えたいと考えています。
私のデータベース構造はこれです:
Table: threads
Fields: name, f_id, t_id
Table: posts
Fields: author, date, post, t_id, p_id
スレッドには、スレッドの名前、スレッドが属するフォーラムの f_id、およびそれ自体の自動インクリメント スレッド ID が含まれます。posts には、作成者、日付、投稿、それが含まれているスレッドの t_id、および自動インクリメントされた投稿 ID があります。このため、間に別のスレッドで投稿が行われた場合でも、2 番目の投稿は常に最初の投稿よりも高い ID になります。
私の問題は、特定のフォーラムのすべてのスレッドを表示したいときに発生します。私は現在このコードを使用しています:
$t_query = mysqli_query($link, "SELECT name, t_id FROM threads WHERE f_id = ".$f_id."");
echo "<table><tr><td>Name</td><td>Author</td><td>Date</td></tr>";
while($rowt = mysqli_fetch_array($t_query)) {
$p_query = mysqli_query($link, "SELECT author, DATE_FORMAT(date, '%r on %c/%e/%Y') as date_f, p_id FROM posts WHERE t_id = ".$rowt['t_id']." LIMIT 1");
echo "<tr><td><a href=\"../pages/post.php?t_id=",htmlentities($rowt['t_id']),"\">",htmlentities($rowt['name']),"</a></td>";
while($rowp = mysqli_fetch_array($p_query)){
echo "<td>",htmlentities($rowp['author']),"</td><td>",htmlentities($rowp['date_f']),"</td></tr>";
}
echo "</table>";
日付が投稿にあり、最初のループがスレッドから取得されるため、日付で注文できないことを除いて、それは問題なく機能します。私が達成する必要があるのは、t_id がスレッドの t_id と等しい投稿から最大の p_id の日付を取得する結合です。
少し混乱しているように思えますが、誰かが結合クエリとphpの微調整を手伝ってくれることを願っています。
ありがとう、シャーフ。