0

次の SQL クエリがあります。複数のグループに属するユーザーを選択します。各グループは、プログラムに対して異なる、または場合によっては同じ権限を持っています。

SELECT app_name, priv_access, priv_insert, priv_delete, priv_update, priv_export, priv_print 
FROM news_sec_groups_apps 
WHERE group_id IN (SELECT group_id 
                   FROM news_sec_users_groups 
                   WHERE login = 'test2')

私が達成しようとしているのは、各グループ アクセスの最大値を示す 1 つの行を含む配列を作成することです。たとえば、あるグループが priv_access と priv_export へのアクセス権を持ち、他のグループが priv_delete へのアクセス権を持っているとします。app_name、priv_access、priv_delete、および priv_export がすべて Y を示し、他の項目が null または No である単一のレコードが必要です。

'form_imsi_news', 'Y', '', '', '', 'Y', ''
'form_imsi_news', NULL, NULL, Y, NULL, NULL, NULL

'form_imsi_news', 'Y', '', 'Y', '', 'Y', '' のようになります。

どんな助けでも大歓迎です。

4

1 に答える 1

1

結果を次のようにグループ化したいと思いますapp_name:

SELECT app_name, max(priv_access), max(priv_insert), max(priv_delete),
       max(priv_update), max(priv_export), max(priv_print)
FROM news_sec_groups_apps 
WHERE group_id IN (SELECT group_id 
                   FROM news_sec_users_groups 
                   WHERE login = 'test2')
group by app_name

'Y' > 'N' > '' および NULL は無視されるため、これは直接機能すると思います。

于 2013-04-29T21:16:55.837 に答える