Mysql Query: Где предложение, если существует - PullRequest
1 голос
/ 06 мая 2009

У меня есть база данных MySQL и внутри нее таблица с именем ProductMaster с 6 полями «Product_Id, Product_Name, Model, Opening_date, Closing_Date, Status». Дата открытия и закрытия Может принимать значения NULL. Так что некоторые записи имеют значения для этого поля

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

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

Теперь я хочу изменить запрос, чтобы иметь фильтр по датам открытия и закрытия. если они не нулевые

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

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

Может ли кто-нибудь помочь мне сформулировать запрос? Заранее спасибо

1 Ответ

3 голосов
/ 06 мая 2009

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

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

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

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

#1 AND #2

Что будет оцениваться как ложное, если # 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 предложение, которое вам нужно.

...