我的问题是,如果用户是管理员,我需要先获得两个条件我需要显示所有交易,但如果用户不是管理员,我只需要显示自己的交易。 她的代码是我尝试但不起作用的。
我有桌子
用户(身份证,用户名,密码,类别等)
交易(身份证,姓名,说明,用户名等)
SELECT IF ( (select category from users where username = ‘ali’ )==’A’) THEN
Select * from transaction
ELSE
Select * from transaction where username = ‘ali’
我也试过这个,但仍然没有解决方案
SELECT IF(
SELECT category FROM users where username= 'ali' AND category ='A',
SELECT * FROM Transaction ,
SELECT * FROM Transaction where username= 'ali'
)
由于
答案 0 :(得分:1)
试试这个
$where_text = ""; // initially blank
// here $user variable contains the current username
if($user!='admin') // check $user is admin or not if not
{
$where_text = " WHERE username='$user' "; // update $where_text
}
$query = "SELECT * FROM `transaction` ".$where_text; // apply in the query
现在,您可以通过$query
变量
答案 1 :(得分:0)
我更喜欢在代码中执行此逻辑,但您可以使用where子句中的OR
进行检查:
SELECT * FROM Transaction t
WHERE t.username = 'ali'
OR EXISTS (SELECT category FROM users where username= 'ali' AND category ='A')
答案 2 :(得分:0)
这应该有效:
SELECT * FROM Transactions WHERE username = 'username' OR (SELECT 1 FROM users WHERE username = 'username' AND category = 'A')