Mulambo 1 Denunciar post Postado Outubro 31, 2011 Olá pessoal, to com uma duvída bem chata, gostaria de uma luz! Tenho uma especie de sistema de permissões, onde cada usuario pode ficar responsável por certas areas do sistema. Para fazer isso funcionar, eu criei 3 tabelas, uma para usuarios (User), uma para as areas (partners) e outra para relacionar as duas tabelas anteriores (userPartners) Explicando melhor as tabelas: Tabela User: id,nome,login,senha,etc Tabela Partners: partnerId,partnerName,... Tabela userPartners: partnerId,userId O meu problema é cruzar as tabelas, eu preciso de um select com as seguintes informações, partnerId, partnerName(que está na tabela Partners e não na tabela de associação). Básicamente é essa minha dúvida, atualmente meu SELECT tá assim: $qPartnerSelect = "SELECT `userpartners`.*, `users`.`nome` FROM `userpartners` INNER JOIN `users` ON `userpartners`.`userId` = `users`.`id` ORDER BY `userpartners`.`partnerId` ASC"; Desse modo eu encontro os resultados mas não consigo imprimir o nome do "partner". Agradeço a ajuda de todos, Dênis Fernandes Compartilhar este post Link para o post Compartilhar em outros sites
Leandro Chaves 0 Denunciar post Postado Outubro 31, 2011 Junta a tabela partner no select também: $qPartnerSelect = "SELECT p.partnerId, p.partnerName, u.`nome` FROM `userpartners` up INNER JOIN `users` u ON up.`userId` = u.`id` INNER JOIN `partiners` p ON up.partnerId = p.partnerId ORDER BY `userpartners`.`partnerId` ASC"; Compartilhar este post Link para o post Compartilhar em outros sites
Mulambo 1 Denunciar post Postado Outubro 31, 2011 Muito obrigado, colando seu código deu um errorzinho (Unknown column 'userpartners.partnerId' in 'order clause'.) Então dei um toque, e funcionou perfeito! Segue aqui o código atual(Pouquissima diferença): $qPartnerSelect = "SELECT p.`partnerId`, p.`partnerName`, u.`nome` FROM `userpartners` up INNER JOIN `users` u ON up.`userId` = u.`id` INNER JOIN `partners` p ON up.partnerId = p.partnerId ORDER BY up.`partnerId` ASC"; EDIT Eu me esqueci de um pequeno detalhe, existe uma condição, onde o userId da tabela userPartners tem que ser igual ao id da tabela User. Tentei arrumar essa condição, mas não tive sucesso, alguma idéia? Att,Dênis Fernandes Compartilhar este post Link para o post Compartilhar em outros sites
Henrique Barcelos 290 Denunciar post Postado Outubro 31, 2011 up.`userId` = u.`id` É o que já está feito aqui :huh: Compartilhar este post Link para o post Compartilhar em outros sites
Mulambo 1 Denunciar post Postado Outubro 31, 2011 A grosso modo sim, mas o que tá acontecendo é o seguinte, usuarios que pela lógica não teriam permissão para acessar certa area, estão com livre acesso, ou seja o SELECT tá fazendo uma busca por inteiro sem excluir usuários que não poderiam acessar certas areas. Usuário que deveria ter acesso: Usuário que não deveria: Viu? qualquer um pode selecionar ali, sendo que era pra no segundo caso só aparecer 1 partner. Alguma idéia? Att,Dênis Fernandes Compartilhar este post Link para o post Compartilhar em outros sites
Leandro Chaves 0 Denunciar post Postado Outubro 31, 2011 Acrescenta o id do usuário no Where para filtrar as permissões dele: $qPartnerSelect = "SELECT p.partnerId, p.partnerName, u.`nome` FROM `userpartners` up INNER JOIN `users` u ON up.`userId` = u.`id` INNER JOIN `partiners` p ON up.partnerId = p.partnerId WHERE U.id = {$id} ORDER BY `userpartners`.`partnerId` ASC"; Compartilhar este post Link para o post Compartilhar em outros sites
Mulambo 1 Denunciar post Postado Outubro 31, 2011 Poxa, muito obrigado, agora funcionou perfeito!! Precisando, tamo aê! att,Dênis Fernandes Compartilhar este post Link para o post Compartilhar em outros sites