Форум → Разработка → Базы данных → COUNT()
COUNT()
Страницы: ← Следующая страница →
-
есть две таблицы : blog_post, blog_comment
blog_post
id | author_id | title | text | created_at |
blog_comment
id | blog_post_id | author_name | text | created_at |
мне необходимо одним запросом получить все блог-посты и кол-во комментов к ним, т.е. прибл вот так :
id | author_id | title | text | created_at | num_of_comments |
понимаю что надо сделать лефтджойн, но как в нем уже сделать КАУНТ ? -
Сен. 26, 2008, 6:07 п.п., спустя 13 минут 20 секунд
SELECT COUNT(`blog_comment`.`id`)
FROM `blog_comment`, `blog_post`
WHERE
`blog_comment`.`blog_post_id`=`blog_post`.`id` AND
`blog_post`.`id`=1 -
Сен. 26, 2008, 6:09 п.п., спустя 2 минуты 4 секунды
храни количество камментов в отдельном полеhttps://smappi.org/ - платформа по созданию API на все случаи жизни -
Сен. 26, 2008, 6:10 п.п., спустя 36 секунд
NRG, если тебе надо всетаки вытягивать сразу - UNION спасет тебя :)https://smappi.org/ - платформа по созданию API на все случаи жизни -
Сен. 26, 2008, 6:12 п.п., спустя 2 минуты
храни количество камментов в отдельном поле
и что при каждом добалении/удалении камента мне апдейтить еще эту тейблу ? -
Сен. 26, 2008, 6:14 п.п., спустя 1 минуту 46 секунд
SELECT B.*, COUNT(BC.*) AS `comments`
FROM `blogs` AS B
LEFT JOIN `blogs_comments` AS BC
ON BC.`parent_id`=B.`id`
GROUP BY B.`id`
вобще group by нуженвсе умрут, а я изумруд -
Сен. 26, 2008, 6:16 п.п., спустя 2 минуты 39 секунд
я сначала думал просто сделать такSELECT * FROM `sf_blog_post` LEFT JOIN `sf_blog_comment` ON `sf_blog_post`.`id` = `sf_blog_comment`.`sf_blog_post_id`
а потом уже оттуда все вытягивать…
md5, твой вариант по сути тот же… -
Сен. 26, 2008, 6:18 п.п., спустя 2 минуты
и что при каждом добалении/удалении камента мне апдейтить еще эту тейблу ?
А что в этом плохого? Добавление комментария происходит реже, нежели выборка. -
Сен. 26, 2008, 6:20 п.п., спустя 1 минуту 40 секунд
ну а в чем проблема?
я сначала думал просто сделать такSELECT * FROM `sf_blog_post` LEFT JOIN `sf_blog_comment` ON `sf_blog_post`.`id` = `sf_blog_comment`.`sf_blog_post_id`
а потом уже оттуда все вытягивать…
md5, твой вариант по сути тот же…все умрут, а я изумруд -
Сен. 26, 2008, 6:21 п.п., спустя 49 секунд
sap, я не говорю что это песпредельно плохо, но мне кажется так будет неправильно…
меня интересует реально ли получить такой результат который я написал в сабже одним запросом…. -
Сен. 26, 2008, 6:29 п.п., спустя 7 минут 50 секунд
NRG, плюс в том что если ты отображаешь список постов и количество камментов к ним. То ты не затрагиваешь другие таблицы. Реши для себя - чаще пишут или читают.https://smappi.org/ - платформа по созданию API на все случаи жизни -
Сен. 26, 2008, 6:30 п.п., спустя 1 минуту
select p.*, x.num from pages p, (select count(*) as num from comments c where c.page_id=p.id) as x where 1=1
незнаю насчет мускула у меня в оракле работает -
Сен. 26, 2008, 6:35 п.п., спустя 4 минуты 53 секунды
Реши для себя - чаще пишут или читают.
В любом случае, читают чаще. Я считаю, что в первую очередь должна быть оптимизирована выборка. Лучше на один селект инсерт и апдейт, чем каждый раз джойн. -
Сен. 26, 2008, 6:40 п.п., спустя 5 минут 40 секунд
sap, я написал для того чтобы задумался NRG, а не ты :))https://smappi.org/ - платформа по созданию API на все случаи жизни -
Сен. 26, 2008, 6:42 п.п., спустя 1 минуту 47 секунд
adw0rd, спасибо, твой вариант меня устраивает, сделаю так. =)
Страницы: ← Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!