0

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

少なくとも 1 つが指定された日付範囲内にある場合、指定されたカテゴリのすべての日付を選択する方法を理解しようとしています。それ以外の場合は、何も選択しません。
例:
日付範囲が 2012 年 9 月 1 日から 2012 年 9 月 31 日までの場合、クエリはカテゴリ 3 のすべての行を返し、カテゴリ 4 の行は何も返しません。

単一のクエリでこれを行う方法はありますか?

ありがとう!

4

1 に答える 1

2

これは、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
于 2012-09-27T18:19:51.837 に答える