unión interna postgreSQL
-
06-07-2019 - |
Pregunta
tengo consulta sql
select * from "Roles" Join "Users" On "Roles".Role="Users".RoleId
devuelve la columna de error Roles.role no existe
consulta
select * from "Roles" Join "Users" On Roles.Role=Users.RoleId
falta el error de devolución en la entrada de la cláusula FROM para la tabla " roles "
¿Cómo puedo resolver este problema? Yo siempre trabajo con ms sql
Solución
No puede usar los roles de nombre en la condición de unión. Internamente, todos los nombres de tablas como Roles, ROLES, roles, RoLeS se convierten en roles (minúsculas). Cuando usas " Roles " ;, " ROLES " ;, " roles " ;, " RoLeS " el nombre se utiliza exactamente como lo ha escrito (sin conversión en minúscula), por lo que en la parte FROM se toman " Roles " y " Usuarios " Las tablas y en la condición de unión, los nombres de las tablas son roles y usuarios, y dichas tablas no existen.
La forma simple es usar solo nombres de tablas sin " " ;, simplemente use roles simples en lugar de " roles " para que pueda escribir roles o roles independientemente de las letras mayúsculas y minúsculas.
Otros consejos
escríbelo de esta manera:
select * from Roles INNER JOIN Users On (Roles.Role= Users.RoleId)
verifique INNER JOIN two tables para obtener más información. ..
o puede usar la forma simple en que funciona con la mayoría de los DBMS:
select * from Roles,Users where Roles.Role= Users.RoleId
Sospecho que necesitabas escribir " Roles ". " Role " = " Usuarios ". " RoleId "
, porque se queja de no poder encontrar el nombre de la columna en minúscula.
Como han mencionado otros, generalmente es más fácil crear todo en minúsculas, incluso si usa mayúsculas y minúsculas en las consultas: por lo tanto, si la tabla se llama " roles " y la columna " rol " Puede escribir Roles.Role = Users.RoleId
y los identificadores se convertirán en minúsculas detrás de la escena.