Digamos que eu tenho três tabelas,
a tabela Usuário
|-----|------|
| id | email|
|-----|------|
A tabela de funções
|-----|------|
| id | name |
|-----|------|
E Um talble que mantém o relacionamento de Usuário e Função
|----------|---------|
| user_id | role_id |
|----------|---------|
Aqui está a pergunta: se eu quero descobrir se um usuário tem uma função específica ( ADMIN
por exemplo) ou não,
fiz algo assim:
select * from user inner join (user_role innner join role on role.id = user_role.role_id and role.name = 'ADMIN') on user.id = user_role.user_id where user.email = '[email protected]';
Quando executo esse sql no mysql, ele Unknown column 'user_role.role_id' in 'on clause'
me informa por
que? E qual deve ser o sql correto?
Esta consulta deve funcionar no seu caso solicitado:
select
*
from
user
inner join
user_role on user.id = user_role.user_id
inner join
role on user_role.role_id = role.id
where
role.name = 'ADMIN'
and user.email = 'xxxx.google.com'
Você está aninhando incorretamente o seu joins
na sua consulta. É por isso que o erro é gerado. Compare sua consulta com a minha consulta acima.
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras