Самое изящное решение, чтобы как в варианте выше не тянуть за каждой записью кучу комментов (ибо представляете, сколько тогда будет запросов, если на странице будет, например, 20 записей, к каждой из которых добавлено по 10-20 комментов) заключается в том, что в таблице нужно создать колонку `parent` и заносить туда единицу, если коммент добавляется из поля ввода новой записи, иначе, если из поля, открываемого по ссылке "Ответить" - 0. Это будет означать по сути ответ на родительский коммент, который и является записью на стенке (ибо чем не запись? Текст есть, картинка есть). При выводе комментов просто выводите записи со значением `parent` = 1 другим шаблоном, например comment_parent.htm, если шаблонизатор у Вас свой - типа с серым фоном, более крупным текстом, и т. д. А комменты - comments_answer.htm. В БД создаете колонку `thread_id`, куда заносите `id` коммента, если это запись, и его же, при добавлении коммента к ней, просто получая `thread_id` родительского коммента. И самое главное - при выводе сортируйте их по thread_id и id коммента одновременно:
... AND `position` <= "3"
ORDER BY `thread_id` DESC, `id` ASC
LIMIT 0,20
Это поможет сгруппировать их в нужном порядке, причем не прибегая к GROUP BY, выводя помимо самой записи три последних коммента к ней. Писал экспромтом, реализовал относительно давно, детали опустил, но главное, что суть передал. При наличии определенных навыков и главное понимания сути это все реализовывается относительно просто. Для того я саму суть и изложил, что бы Вы поняли сам принцип. А реализация осуществляется конкретно для проекта.