Report abuse


			
CREATE TABLE events (
  start_date DATE,
  end_date DATE
);

INSERT INTO events VALUES (DATE('2008-04-01'), DATE('2008-04-04'));
INSERT INTO events VALUES (DATE('2008-03-01'), DATE('2008-04-04'));

-- User enteres dates 2008-04-01 and 2008-04-03

SELECT date_range.some_day, COUNT(*)
FROM   events, (
            SELECT DATE('2008-04-01') AS some_day FROM DUAL UNION ALL
            SELECT DATE('2008-04-02') FROM DUAL UNION ALL
            SELECT DATE('2008-04-03') FROM DUAL                        
       ) AS date_range
WHERE date_range.some_day BETWEEN events.start_date AND
events.end_date
GROUP BY 1;


-- EXECUTION:


mysql> CREATE TABLE events (
    ->   start_date DATE,
    ->   end_date DATE
    -> );
Query OK, 0 rows affected (0.00 sec)

mysql> 
mysql> INSERT INTO events VALUES (DATE('2008-04-01'), DATE('2008-04-04'));
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO events VALUES (DATE('2008-03-01'), DATE('2008-04-04'));
Query OK, 1 row affected (0.00 sec)

mysql> SELECT date_range.some_day, COUNT(*)
    -> FROM   events, (
    ->             SELECT DATE('2008-04-01') AS some_day FROM DUAL UNION ALL
    ->             SELECT DATE('2008-04-02') FROM DUAL UNION ALL
    ->             SELECT DATE('2008-04-03') FROM DUAL                        
    ->        ) AS date_range
    -> WHERE date_range.some_day BETWEEN events.start_date AND
    -> events.end_date
    -> GROUP BY 1;
+------------+----------+
| some_day   | COUNT(*) |
+------------+----------+
| 2008-04-01 |        2 | 
| 2008-04-02 |        2 | 
| 2008-04-03 |        2 | 
+------------+----------+
3 rows in set (0.00 sec)