Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   помогите организовать запрос в БД (https://javascript.ru/forum/server/29135-pomogite-organizovat-zapros-v-bd.html)

posta 16.06.2012 18:19

помогите организовать запрос в БД
 
Есть 2 таблицы: статьи и комментарии к ним.
Как можно сделать такой запрос в бд, который бы выбирал все статьи и к каждой статье считал количество комментариев к ней.

И почему то у меня возникают сомнения, что это оптимизировано.

на мой взгляд проще создать в статье отдельное поле с количеством добавленных комментариев к ней (и обновлять его при добавлении комментария), чем для каждой статьи считать количество комментариев.

sergasd 16.06.2012 19:48

Как то так:
SELECT `a`.*, COUNT(`c`.`id`) `comments_count` 
FROM `articles` `a`
LEFT JOIN `comments` `c` ON(`c`.`article_id` = `a`.`id`)
GROUP BY `a`.`id`


Но, при больших объемах данных будет правильнее ваш вариант с дополнительным полем.

posta 16.06.2012 19:56

А если у меня вот такая конструкция (с категориями):
SELECT * FROM `articles`
LEFT OUTER JOIN `category`
ON `articles`.`a_cat` = `category`.`cat_id`	
WHERE `it_visible`= 1


Как сюда добавить выборку количества комментов к записи статьи?

sergasd 16.06.2012 22:46

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.