overcloked Posted October 29, 2009 at 03:01 PM Report Share #293865 Posted October 29, 2009 at 03:01 PM Boas ppl tenho a seguinte estrutura de dados: http://img267.imageshack.us/img267/3545/mydb.th.jpg Com isto consigo ter: roles <-> users role_groups <-> users role_groups <-> roles Ou seja um user tanto pode ter roles associadas directamente como ter associadas roles através de grupos. Agora a minha questão, tenho andado a tentar fazer uma query que me retorna-se todas as roles que um user tem associado incluindo as que estão associadas aos grupos que por sua vez estão associados ao user. Não me consegui entender com o SQL acabei por fazer através de PHP com várias queries: uma query que retorna todas as roles associadas directamente ao user outra que me retorna todos os grupos do user e outra que retorna todas as roles dos grupos associados ao user misturando tudo consegui saber que roles estão associadas a um determinado user No entanto pela minha sanidade e pela performance da aplicação gostaria de transformar estas várias queries em uma, é possivel? Ob, abraços, MJS Link to comment Share on other sites More sharing options...
overcloked Posted October 29, 2009 at 04:06 PM Author Report Share #293876 Posted October 29, 2009 at 04:06 PM Consegui a solução no forum da codeigniter, aqui fica a solução: SELECT tab_roles.role_id, tab_roles.class, tab_roles.function FROM tab_roles LEFT JOIN tab_role_user ON tab_role_user.role_id = tab_roles.role_id WHERE tab_role_user.user_id = 30 UNION SELECT tab_roles.role_id, tab_roles.class, tab_roles.function FROM tab_roles LEFT JOIN tab_roles_roleGroup ON tab_roles_roleGroup.role_id = tab_roles.role_id LEFT JOIN tab_roleGroup ON tab_roleGroup.roleGroup_id = tab_roles_roleGroup.roleGroup_id LEFT JOIN tab_roleGroup_user ON tab_roleGroup_user.roleGroup_id = tab_roleGroup.roleGroup_id WHERE tab_roleGroup_user.user_id = 30 Credits to @rno Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now