помогите организовать запрос в БД
Есть 2 таблицы: статьи и комментарии к ним.
Как можно сделать такой запрос в бд, который бы выбирал все статьи и к каждой статье считал количество комментариев к ней. И почему то у меня возникают сомнения, что это оптимизировано. на мой взгляд проще создать в статье отдельное поле с количеством добавленных комментариев к ней (и обновлять его при добавлении комментария), чем для каждой статьи считать количество комментариев. |
Как то так:
SELECT `a`.*, COUNT(`c`.`id`) `comments_count` FROM `articles` `a` LEFT JOIN `comments` `c` ON(`c`.`article_id` = `a`.`id`) GROUP BY `a`.`id` Но, при больших объемах данных будет правильнее ваш вариант с дополнительным полем. |
А если у меня вот такая конструкция (с категориями):
SELECT * FROM `articles` LEFT OUTER JOIN `category` ON `articles`.`a_cat` = `category`.`cat_id` WHERE `it_visible`= 1 Как сюда добавить выборку количества комментов к записи статьи? |
SELECT `a`.*, `cat`.* , COUNT(`c`.`id`) `comments_count` FROM `articles` `a` LEFT JOIN `category` `cat` ON(`a`.`a_cat` = `cat`.`id`) LEFT JOIN `comments` `c` ON(`c`.`article_id` = `a`.`id`) WHERE `a`.`it_visible` = 1 GROUP BY `a`.`id` |
Часовой пояс GMT +3, время: 06:36. |