2014-11-27 3 views
0

У меня возникли проблемы с подозрительной логической ошибкой с оператором CASE в моем предложении WHERE, но я не вижу проблемы.Случай MySQL в where, где статья

SELECT a_id, a_name, a_folder_flag 
FROM table_a 
LEFT JOIN table_b ON table_a.a_id = table_b.b_a_id 
WHERE a_status_id = 1 
AND (
CASE 
    WHEN a_access_flag = 1 
    THEN b_usr_id = 1 OR b_grp_id = 2 
    END) 
GROUP BY a_id 

В основном я хочу, чтобы получить все записи из table_a но если a_access_flag это 1 то мне нужно применить дополнительный пункт, где фильтрация в операторе CASE.

В настоящее время он возвращает 0 строк, когда я включаю оператор CASE.

ответ

2

A case не имеет смысла в статье where. Но вы можете преобразовать это в логику. Попробуйте

WHERE a_status_id = 1 
AND 
(
    a_access_flag <> 1 
    OR (b_usr_id = 1 OR b_grp_id = 2) 
) 
+0

Ahhhh, спасибо за ваш ответ. Это похоже на работу, я просто делаю еще несколько тестов, но это выглядит очень многообещающе. благодаря – Tim

Смежные вопросы