У меня есть 2 таблицы: комментарии и сообщения. Я хотел бы отобразить список из 15 сообщений и максимум 2 последних комментариев под каждой записью в блоге, используя mysql.
схема базы данных выглядит так:
posts_table: post_id, post_txt, post_timestamp comments_table: post_id, comment_txt, comment_timestamp
как должен выглядеть запрос mysql для выбора 15 сообщений и связанных с ними комментариев (максимум 2 последних из них за сообщение)?
благодаря
MySQL LIMIT
SELECT * FROM posts_table LIMIT 0, 15
И вывести последние комментарии:
SELECT * FROM comments_table ORDER BY comment_timestamp DESC LIMIT 0, 2
Я оставлю это вам, чтобы присоединиться к двум запросам вместе …
Во-первых, я бы выбрал такие должности
$resource = mysql_query('SELECT * FROM posts LIMIT 0,10'); //your own query in place here to get posts $posts = array(); while($row = mysql_fetch_assoc($resource)) { $query = sprintf('SELECT * FROM comments WHERE post_id = %d',$row['post_id']); $comments = mysql_query($query); while($row2 = mysql_fetch_assoc($comments)) { $row['comments'] = $row2; } $posts[] = $row; }
Затем в вашем шаблоне / представлении
foreach($posts as $post) { //Print out your main posts data here. foreach($post['comments'] as $comment) { //Print out your comments here! } }
Надеюсь это поможет