MySQL SELECT:根据同一个表中的列值返回多个列

时间:2011-03-28 11:15:34

标签: php mysql select

我正在从包含文件元信息的单个表中读取行。其中一列acl包含映射到(不受限制,受限制或私有)的标志(0,1或2)。我想创建一个SELECT查询,它将根据两个PHP变量$ userId和$ isAdmin返回文件数据。逻辑如下:

  • 如果acl = 0,则返回文件信息行,而不管$ userId或$ isAdmin值
  • 如果acl = 1且$ isAdmin为TRUE
  • ,则返回文件信息行
  • 如果acl = 2,则返回文件信息行IF $ userId = fileownerid(其中fileownerid是表中存储上传文件的所有者ID的列)

所以基本上我正在对表进行查询,只返回允许用户查看的行

我尝试在子查询中使用各种CASE和IF语句但无法解决它。如果没有在PHP中处理SQL结果,就不可能做到这一点。

任何大师都看到了一种方式?

2 个答案:

答案 0 :(得分:1)

select * from file where (acl = 0) or (acl = 1 and ? = 'TRUE') or (acl = 2 and ? = fileownerid) 然后将isAdmin和userid绑定到变量1和2。

答案 1 :(得分:0)

我认为这样的事情应该可以胜任:

$qry = 'SELECT * FROM yourtable 
WHERE (acl = 0)
OR (acl = 1 AND '.$isAdmin.')
OR (acl = 2 AND '.$userId.' = fileownerid)';