2014-02-20 2 views
0

Таблица клиентовMySQL, если переменная а затем показать результаты + конкретный результат

ID  | Name | start_Date   | Future 
1   John  20-02-2014 15:00:00  0 
2   Maria  20-02-2014 15:00:00  0 
3   Stack  21-02-2014 15:00:00  1 
4   Google 21-02-2014 15:00:00  0 

В настоящее время мой запрос выглядит следующим образом:

SELECT * FROM clients 

Очевидно, что это будет получить все клиенты, но я хочу, чтобы отобразить клиентов в соответствии с переменной Future. Когда задана переменная Future, клиенты могут показывать только с start_Date.

Если изменить мой запрос к этому:

SELECT * 
FROM clients 
WHERE (NOW() >= start_Date OR start_Date IS NULL 
     OR start_Date = '0000-00-00 00:00:00') 

Это поможет мне:

ID  | Name | start_Date   | Future 
1   John  20-02-2014 15:00:00  0 
2   Maria  20-02-2014 15:00:00  0 

Но выход я ожидаю:

ID  | Name | start_Date   | Future 
1   John  20-02-2014 15:00:00  0 
2   Maria  20-02-2014 15:00:00  0 
4   Google 21-02-2014 15:00:00  0 

Я не хочу показать

3   Stack  21-02-2014 15:00:00  1 

, поскольку переменная Future установлена ​​в 1, и ее можно будет отобразить только завтра (21-02-2014 15:00:00). Так, в конце концов, я придумал это без успеха:

SELECT * 
FROM clients 
WHERE CASE WHEN Future = 1 THEN (NOW() >= start_Date OR start_Date IS NULL 
     OR start_Date = '0000-00-00 00:00:00') END 

ответ

2

Попробуйте это:

SELECT * 
FROM clients 
WHERE future = 0 
OR (future = 1 
    AND (NOW() >= start_Date 
     OR start_Date IS NULL 
     OR start_Date = '0000-00-00 00:00:00')) 
+0

Это один решить мою проблему, я только что добавить: 'WHERE future = 0 ИЛИ future IS NULL OR (future = 1 ...)'. Я отвечу на ответ через 5 минут. – user3243925

0

почему бы не использовать этот

SELECT * 
FROM clients 
WHERE future = 0 
Смежные вопросы