我有以下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')
我要完成的是创建一个包含一行的数组,显示每个组访问的最大值。 例如,如果一个组可以访问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',''
请大家非常感谢任何帮助。
答案 0 :(得分: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被忽略。