2

MySQLデータベースがあり、その中に6つのフィールド「Product_Id、Product_Name、Model、Opening_date、Closing_Date、Status」を持つProductMasterというテーブルがあります。Opening_DateとClosingDateはnull値を受け入れることができるため、一部のレコードにはこのフィールドの値があります

このテーブルのレコードを表示するために、以下のクエリがあります。

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

ここで、クエリを変更して、Opening_DateとClosing_Dateがnullでない場合にフィルターを設定します。

例:レコードのOpening_Dateが2009年5月1日、Closing Dateが2009年5月30日の場合、今日がこれら2つの日付の間の日付であるかどうかを確認し、「はい」の場合はレコードを返します。

両方のフィールド値が空の場合、レコードを返します

誰かが私がクエリを組み立てるのを手伝ってくれる?前もって感謝します

4

1 に答える 1

3

WHEREクエリの一部 (「WHERE句」) は、単なる長いブール式です。これは何を意味するのでしょうか?その MySQL は、true または false のいずれかを返すことだけを望んでおり、「はい。この行を結果に含める」と理解します。または「いいえ。この行を結果に含めないでください。」

私の理解が正しければ、次の 2 つのことを行う必要があります。

  1. opening_dateclosing_dateが_null
  2. 今日がこれら 2 つの日付の間にあるかどうかを確認します。

そして、#1 が true の場合にのみ #2 が発生するようにします。次のように表現できます。

#1 AND #2

#1 または #2 のいずれかが false の場合、これは false と評価されます。

それは次のように翻訳できます。

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

#1 AND #2したがって、これらの 2 つを ( )を使用すると述べた式の #1 と #2 のように扱うと、次のようになります。

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

そして、それがWHEREあなたが必要とする条項です。

于 2009-05-06T06:10:27.667 に答える