Php 如果至少有一个类别在范围内,如何选择类别内的所有类别

Php 如果至少有一个类别在范围内,如何选择类别内的所有类别,php,mysql,sql,lamp,Php,Mysql,Sql,Lamp,我在PHP中使用MySQL。 我有一个SQL表,看起来像这样: id | category_id | date ----------------------------- 1 | 3 | 2012-09-12 2 | 4 | 2012-10-25 3 | 3 | 2012-10-12 4 | 3 | 2012-10-02 5 | 4 | 2012-11-03 6 | 3

我在PHP中使用MySQL。 我有一个SQL表,看起来像这样:

id | category_id | date
-----------------------------
1  | 3           | 2012-09-12
2  | 4           | 2012-10-25
3  | 3           | 2012-10-12
4  | 3           | 2012-10-02
5  | 4           | 2012-11-03
6  | 3           | 2012-11-02
我试图弄清楚,如果至少有一个日期在指定的日期范围内,如何选择给定类别的所有日期,否则选择“无”。 例如: 如果日期范围为2012-09-01至2012-09-31,则查询应返回类别3的所有行,而类别4的所有行

有没有一种方法可以在单个查询中实现这一点


谢谢

您可以使用join或in子句执行此操作:

select t.*
from t join
     (select distinct category_id
      from t
      where date between <datefrom> and <dateto>
     ) tc
     on t.category_id = tc.category_id
order by t.category_id, date