EDITこれをさらに簡素化するために。
この構造を見てみましょう。
表 1: idProduct (int) | 名前 (varchar)
表 2: idDay (整数) | idProduct (整数) | date_start(日時) | date_end (日時)
idProduct は、両方のテーブルで共通の列です。表 2 には、次のようなデータが含まれています。
0, 2, 11/22/2012, 11/22/2012
1, 2, 11/23/2012, 11/23/2012
2, 2, 11/24/2012, 11/24/2012
3, 2, 00/00/0000, 11/25/2012
4, 2, 11/25/2012, 00/00/0000
date_start、date_end、またはその両方がすべてゼロの場合があることに注意してください。その場合、この上限または下限は無制限/無制限と見なされます。
上記のケースでは、今日の日付が期間 (date_start の最も早い日付と date_end の最も遅い日付) の間にある場合にのみ、ID 2 の idProduct を選択したいと思います。date_start が 00/00/0000 の場合、常に製品が返されますが、date_end が未来の場合は返されます。逆は、date_end がすべてゼロで、date_start が設定されている場合に適用されます。両方の列がゼロの場合、積を返します。