Вопрос по организации комментариев
Вот такой примитивный вопрос.
Часто на сайтах к каким либо сообщениям существует возможность добавлять комментарии
Вопрос в том как их правильно организовать,создать отдельную таблицу?
Хранить их в той же таблице где сами сообщения , а может в текстовом файле
подскажите пожалуйста...?
2.А комментарии сразу ко всем сообщениям выводить не хочу мне нужно лишь их количестов сразу для всех узнать....
Наверное логичнее делать такую кнопку для каждого объявления. Тогда после нажатия будет выполняться только один достаточно простой запрос к БД, Главное не забудь индексы в таблице расставить ;)
Колличество для всех можно будет узнать одним вложенным или отдельным запросом. Я бы делал вложенный.
2.С точки зрения быстроты вложенный запрос не слишком тормозит...?
я только поэтому тему и открыл, чтобы сделать рациональнее и быстрее...
2.С точки зрения быстроты вложенный запрос не слишком тормозит...?
Не должен. Вложенный запрос будет очень простенький и сильно sql-сервер не загрузит.
Не для отображения коментов, а для подсчета их кол-ва при показе общего списка.
Я тоже не врублюсь, как можно ещё во вложенном запросе что-то сосчитать? Всё это, обычно, делается с помощью двух запросов:
I. SELECT COUNT(<field_name>) FROM <table_name> WHERE <where_clause>
II. SELECT * FROM <table_name> WHERE <where_clause> LIMIT <limit>
Короче, в первом запросе тупо получаем количество записей, удовлетворяющих условию, во втором - непосредственно некоторое количество записей под это условие. О каких вложенных запросах речь?
Постараюсь пояснит вот выводим десять сообщений(или объявлений)
SELECT * FROM <table_name> WHERE <where_clause> LIMIT 0,10;
потом выводим...
Но у каждого сообщения могут быть комментарии, дак вот как сразу узнать у какого сколько, и есть ли вообще ведь не делать же во время вывода каждого сообщени запрос на количество комментариев
(комментарии хранятся в отдельной таблице)
Я имею ввиду что-то типа
SELECT a.*, (SELECT COUNT(c.id) FROM comments AS c WHERE c.adv_id = a.id) AS comments_number FROM advertisements AS a LIMIT 0,10