2017-08-25 6 views
-2

IF条件に基づいてクエリ条件を変更する方法が必要です。条件のMySQL "AND"/"OR"クエリ

私はサービスの利用可能時間をテーブルに保存しています。たとえば、サービスが "08"から "16"まで利用可能な場合は、これらの値をwork_startwork_endとして保存します。サービスが現在利用可能かどうかを確認し、次のようなクエリを行う必要があります。

where $current_time > work_start AND $current_type < work_endあなたが見ることができるように

$current_time > work_start OR $current_type < work_end

しかし

サービスが(「22」を「06」から、たとえば)の夜に利用可能である場合のために、私はこのような結果を取得する必要がありますクエリ間の唯一の違いは、 "AND"/"OR"条件です。

条件に応じて、異なる比較を実行するために結果

+1

サンプルデータと期待される結果を提供してください。 – Jens

+0

@Jens私はテーブルにサービスの利用可能時間を格納します。たとえば、サービスが "08"から "16"まで利用可能な場合、それらの値を "work_start"と "work_end"として保存します。 サービスが現在利用可能で、このようなクエリがあるかどうかを確認する必要があります。 '$ current_time> work_start AND $ current_type work_start OR $ current_type

+0

@Jensありがとう、まあ、私はmysqlには新しくないが、巧妙な解決策は考えられない。一日中閉鎖されているので、サービスが利用できない場所(別の話)のdatetimesを保管する別のテーブルがある。これを行う方法の解決策。 –

答えて

2

使用IF()CASEを返すことができ、このためのエレガントな解決策や回避策があります。

SELECT * 
FROM table 
WHERE CASE WHEN work_start < work_end 
     THEN @current_time BETWEEN work_start AND work_end 
     ELSE @current_time >= work_start OR @current_time <= work_end 
     END 
+0

WOW!これは完璧に動作します、ありがとうございます。 –