一些背景。我正在使用Rails 3进行拼车应用程序。我使用fullcalendar作为jQuery日历库。它也不起作用很好,当一天中有很多事件。所以,我想要做的是有两个“事件源”。在一个中,我想返回所有事件,按日期和类别分组,计数小于某个值。 对于其他,我想返回所有记录,其中有一个计数为,比这个值多。导轨3,不同的计数倍数有条件
道歉,如果这是不明确,一些样本数据可能使之更加明显
基本记录结构:
| id | date | category_id |
| 1 | 1-Aug | 1 |
| 2 | 1-Aug | 1 |
| 3 | 1-Aug | 1 |
| 4 | 1-Aug | 2 |
| 5 | 1-Aug | 2 |
| 6 | 1-Aug | 3 |
假设3是一个神奇的计数次数(3或更高版本进行分组)我想一个选择返回
| id | date | category_id | count |
| 1 | 1-Aug | 1 | 3 |
(我并不真正关心的是,ID可以使用GROUP_CONCAT组合(与MySQL)),在我的使用情况下,它并不重要 - 我想知道的是,在8月1日第1类有3项
第二选择应该返回一切
| id | date | category_id | count |
| 4 | 1-Aug | 2 | 2 |
| 5 | 1-Aug | 2 | 2 |
| 6 | 1-Aug | 3 | 1 |
我并不真的需要计数返回,但问题是,有每一个结果个体行不具有计数> = 3
目前我的SQL是这样的:
SELECT `pools`.*
FROM `pools`
INNER JOIN `fields` ON `fields`.`id` = `pools`.`field_id`
INNER JOIN `regions` ON `regions`.`id` = `fields`.`region_id`
INNER JOIN `countries` ON `countries`.`id` = `regions`.`country_id`
WHERE `regions`.`country_id` = 1
AND `pools`.`confirmed` = 1
AND (leaving_date >= '2012-04-30 00:00:00')
AND (leaving_date <= '2012-06-04 00:00:00')
GROUP BY field_id, leaving_date
HAVING count(*) >= 3
ORDER BY leaving_date
我可以遍历通过量h数组返回 - 但如果可能的话,我宁愿在SQL方面做。还想在最少的数据库行程中做到这一点..一般指针将非常感激!
一般的指针将创造两个作用域返回的数据集,你想和使用它们:) – DVG