我正在研究一个项目,其中用户的记录访问权限基于用户的用户组进行限制。我创建了一个全局变量$ usr_sec_group,并且我想为几个应用程序的SELECT语句中的WHERE子句添加一个CASE语句,该语句根据$ usr_sec_group的值应用不同的过滤器。我是一个关于mySQL的亲戚“新手”,我在写这样的陈述方面的尝试没有奏效。这是基本的逻辑:SELECT WHERE CASE语句
SELECT
field1,
field2,
etc
FROM
Organizations
CASE $user_sec_group
WHEN 1 THEN 'filter_statement_1'
WHEN 2 THEN 'filter_statement_2'
WHEN 3 THEN 'filter_statement_3'
ELSE 'filter_statement_else'
END CASE
ORDER By
field1
的“filter_statements”可以是任何有效的过滤器,如
'oName => 'a' AND oName < 'g'
我假设的问题是语法的一个相对简单的事情,但到目前为止,我无法编写可行的CASE语句。
我将不胜感激一些指导!
感谢米奇,您的回应。由于我正在使用的应用程序开发工具集(ScriptCase)有一个用于管理用户访问视图/应用程序的模块,因此我原本想要创建更多视图。但是,我希望找到一个更优雅的解决方案,不会增加需要维护的视图/应用程序的数量。 – user1814188
视图通常是一件好事(只要你没有观看视图的意见等)。 –