Я занимаюсь разработкой сайта, где пользователи могут оставлять комментарии, и каждый комментарий классифицируется. У меня есть страница, на которую пользователи могут перейти и просмотреть список всех категорий на сайте с последними 5 опубликованными комментариями.
Информация, которую мне нужно получить из базы данных:
- Список категорий
- 5 комментариев в каждой категории
Это то, что у меня есть сейчас (упрощено до базового PHP):
echo "<ul>";
$query = mysql_query("SELECT * FROM categories");
while($result = mysql_fetch_assoc($query)){
echo "<li><h2>{$result['category_name']}</h2>";
$query_comments = mysql_query(
"SELECT * FROM comments WHERE ".
"category_id = '{$result['id']}' ".
"ORDER BY created_at DESC LIMIT 5");
while($result_comments = mysql_fetch_assoc($query_comments)){
echo "{$result_comments['username']} wrote {$result_comments['text']} on {$result_comments['created_at']}<br>";
}
echo "</li>";
}
echo "</ul>";
Это выглядело бы так (при условии, что мои категории называются фруктами)
Apple
Jay wrote blah blah blah - August 5, 2009
Bob wrote hello hello hello - August 5, 2009
Tom wrote super super - August 5, 2009
Edward wrote no no no - August 5, 2009
Kaysie wrote super no! - August 5, 2009
Orange
Cassie wrote ye ye ye ye - August 5, 2009
Alfonce wrote whoohoo - August 5, 2009
Arthur wrote love oranges - August 5, 2009
Alice wrote yes yes yes - August 5, 2009
Xavier wrote Lorem ipsum dolor sit amet - August 5, 2009
Strawberry
Chris wrote Lorem ipsum dolor sit amet - August 5, 2009
Hubert wrote Lorem ipsum dolor sit amet - August 5, 2009
Martin wrote Lorem ipsum dolor sit amet - August 5, 2009
Lyon wrote Lorem ipsum dolor sit amet - August 5, 2009
Paris wrote Lorem ipsum dolor sit amet - August 5, 2009
Blueberry
etc...
Проблема в том, что если категорий много, у меня будут проблемы с производительностью, особенно если на сайте много пользователей.
Я изо всех сил пытаюсь найти способ уменьшить количество необходимых запросов. У кого-нибудь есть идеи, как мне это сделать?
ОБНОВЛЕНИЕ Я пытался ВЛЕВО СОЕДИНИТЬСЯ с таблицей категорий с таблицей комментариев, однако я не нашел способа ограничить количество комментариев на категорию, потому что если я использую LIMIT 5, он ограничивает Количество комментариев возвращено.