2017-09-28 12 views
1

のグループの役割に基づいて、役割がhrのユーザーのみに表示されます。フィルタ行は次のように私は、クエリを持っているPostgreSQLの

基本的には時間のユーザーが表示されます

1 member jack 
2 member sarah 
3 manager ron 

非HRユーザーは、私は、ユーザーが時間の役割を持っているか、いない場合は、true falseの値を与えるブールクエリ持っ

1 member jack 
2 member sarah 

表示されるはずです。

select pg_has_role("current_user"(), 'hr'::name, 'MEMBER'::text) 

しかし、私は正しく行をフィルタリングするために選択クエリにそれを統合するように見えます。

は、私はそれを行うことができますどのように

SELECT id,type,name 
FROM users 
WHERE case when select pg_has_role("current_user"(), 'hr'::name, 
'MEMBER'::text) then ___________ else _______________ end 

ような何かをしようとしていますか?

答えて

1

あなたは

select id,type,name 
from users 
WHERE type NOT IN (
    CASE WHEN pg_has_role("current_user"(), 'hr'::name, 'MEMBER'::text) 
    THEN '' 
    ELSE 'manager' END) 
(WHERE内pg_has_role使用するときに選択する必要はありません)クエリを次のよう試すことができます
関連する問題