2009-05-06 3 views
1

У меня есть MySQL db и внутри него таблица ProductMaster с 6 полями «Product_Id, Product_Name, Model, Opening_date, Closing_Date, Status». Дата открытия и закрытия Дата может принимать нулевые значения. Некоторые записи имеют значения для этого поляMysql Query: Where where, если существует

У меня есть следующий запрос для отображения записей из этой таблицы.

"select Product_Id,Product_Name,Model from ProductMaster where Status=1" 

Теперь я хочу, чтобы изменить запрос, чтобы иметь фильтр на Opening_Date и Closing_Date , если они не равны нулю

Ex: Если запись оказывает Opening_Date в 05/01/2009 и Даты закрытия в 05/30/2009 Тогда я хочу, чтобы проверить, является ли сегодня дата в промежутке между этими двумя датами, и если да, возвращает запись

Если оба значения поля пусто, возврат запись

Может ли о ne помочь мне создать запрос? Заранее спасибо

+0

Можете ли вы уточнить, должны ли возвращаться записи с открытием и закрытием_задачей в null? – mattkemp

ответ

3

Часть запроса («WHERE») - это просто длинное булево выражение. Что это значит? То, что MySQL просто хочет, чтобы он возвращал либо true, либо false, что он понимает как «Да. Включите эту строку в результаты». или «Нет. Не включайте эту строку в результаты».

Если я правильно понимаю, что вы хотите сделать две вещи:

  1. Проверьте, если opening_date и closing_date являются null
  2. Проверьте, сегодня находится между этими двумя датами.

И вы хотите, чтобы # 2 произошел, только если # 1. Который может быть выражен следующим образом:

#1 AND #2 

Который был бы оценен как false, если либо # 1, либо # 2 является ложным.

Это может быть переведено как:

  1. (opening_date IS NOT NULL) AND (closing_date IS NOT NULL)
  2. NOW() >= opening_date AND NOW <= closing_date

Итак, если мы рассматриваем те два, как # 1 и # 2 в выражении мы сказали, что мы будем использовать (#1 AND #2), мы получаем:

((opening_date IS NOT NULL) AND (closing_date IS NOT NULL)) 
AND (NOW() >= opening_date AND NOW <= closing_date`) 

И это предложение WHERE, в котором вы нуждаетесь.