В базе данных имеются две таблицы:
db_my_category - категории новостей:
id | name | runame | off |
1 | animal | животные | 1 |
2 | politic | политика | 1 |
3 | world | в мире | 1 |
4 | test | test | 0 |
db_my_news - собственно сами новости
id | title | text | category | date |
1 | news1 | sdfds | 1 | 05/05/2005 |
2 | news2 | czdx | 1 | 05/05/2005 |
3 | news3 | zxcz | 3 | 05/05/2005 |
Задача: получить список категорий и количество новостей в этих категориях, типа такого:
id | name | runame | count |
1 | animal | животные | 2 |
2 | politic | политика | 0 |
3 | world | в мире | 1 |
Надеялся что заработает что нибудь такое, но синтаксис не позволяет, куча лагов:
CODE ( SQL):
скопировать код в буфер обмена
SELECT category.id AS id, category.name AS name, category.runame AS runame, COUNT(publ.*) AS count FROM db_my_category AS category, db_my_news AS publ WHERE category.off <> '0' AND publ.category = category.id ORDER BY id ASC
ps Важное условие: все необходимо вместить в один запрос, для уменьшения нагрузки на сервер.
________________________________ ________________________________ __________
(Добавление)
Всем спасибо. Решение найдено.
CODE ( SQL):
скопировать код в буфер обмена
SELECT category.id AS catid, category.name AS name, category.runame AS runame, COUNT(publ.*) AS count, (SELECT COUNT(*) AS count FROM db_my_news AS publ WHERE publ.category=catid) AS count FROM db_my_category AS category WHERE category.off <> '0' ORDER BY id ASC
Как всегда, все было проще чем казалось. Хотя все же получилось очень громиоздко.
Может у кого есть еще идеи?(Отредактировано автором: 18 Мая, 2010 - 10:24:09)
|