0

いくつかの条件を作成する必要がある巨大な SELECT があります。

例えば:

SELECT `t`.`title`, `t`.`price_paid`, `t`.`date_creation`, `t`.`date_upload` 
  FROM `table_name` AS `t`
 WHERE `t`.`date_creation` >= "'.$year.'-'.$month.'-01" 
   AND `t`.`date_creation` < "'.$year.'-'.($month+1).'-01"

PHP で $year と $month の値を宣言し、残りは MYSQL で作成したいと考えています (必要に応じて詳しく説明できる強力な理由があります)。

必要なのは、date_upload空 (null または 0) にすることとprice、date_upload が と同じ間隔でない場合は空にすることですtdate_creation

4

2 に答える 2

2

そのような日付計算をしないでください。2013-13-01あなたが 12 月なら、MySQL にハイエンドを探すように頼むことになるでしょう。実際の mysql 日付計算を使用します。

SELECT ...
WHERE t_date_creation BETWEEN (now() - INTERVAL 1 MONTH) AND (now() + INTERVAL 1 MONTH)

クエリの場合、UPDATE クエリになります。

UPDATE yourtable
SET date_upload = NULL, price = NULL
WHERE date_restriction_logic_here.
于 2013-04-09T18:33:27.783 に答える
0

これまでの解決策は次のようです。

-> 選択したクエリで MySQL のネストされた「If」

IF(条件、真の場合の値、偽の場合の値)

何かのようなもの

選択しtます。title, if ( t. date_creation>= "'.$year.'-'.$month.'-01" AND t. date_upload< "'.$year.'-'.($month+1).'-01" , t. price_paid, '0') としてprice_paidt. date_creation, if ( t. date_creation>= "'.$year.'-'.$month.'-01" AND t. date_upload< "'.$year.'-'.($month+1).'-01" , t. date_upload, '') date_upload FROM table_nameAS t WHEREとしてtdate_creation>= "'.$年.'-'.$月.'-01" AND t. date_creation< "'.$年.'-'.($月+1).'-01"

そして他の解決策は制御フロー関数のようです

CASE 値 WHEN [比較値] THEN 結果 [WHEN [比較値] THEN 結果 ...] [ELSE 結果] END

http://komlenic.com/254/mysql-nested-if-in-select-queries/ http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.htmlにあります。

于 2013-04-10T15:44:16.737 に答える