ExpressEngine: пользовательский запрос - группировка записей ежедневно - PullRequest
0 голосов
/ 11 декабря 2011

У меня следующий запрос, который группирует и подсчитывает записи за каждый день:

SELECT DISTINCT `year`, `month`, `day`, count(entry_id) as 'posts'
FROM (`exp_channel_titles`)
WHERE `status` =  'open'
GROUP BY `year`, `month`, `day`
ORDER BY `entry_date` desc  

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

для людей, которые не знакомы с базой данных EE, вот несколько примеров из таблиц, которые нам могут понадобиться

exp_channel_titles:

entry_id year month day
1 2011 11 5
2 2011 11 6
3 2011 11 7

exp_categories:

cat_id cat_name
1 sport
2 computer
3 car

exp_category_posts: который связывает записи с категориями

entry_id cat_id
1 2
1 2
2 1
3 3

1 Ответ

1 голос
/ 11 декабря 2011
SELECT ect.year, ect.month, ect.day, count(ect.entry_id) as posts
FROM exp_channel_titles as ect
INNER JOIN exp_category_posts ecp
  ON ecp.entry_id=ect.entry_id
INNER JOIN exp_categories ec
  ON ecp.cat_id=ec.cat_id
WHERE ect.status = 'open' 
  AND ec.cat_name = "computer" /* this is to filter by category name */
GROUP BY ect.year, ect.month, ect.day
ORDER BY ect.entry_date desc;  /* where is this entry_date come from? */
...