внутреннее соединение postgreSQL - PullRequest
0 голосов
/ 24 октября 2009

у меня есть sql запрос

select * from "Roles"  Join "Users"  On "Roles".Role="Users".RoleId

возвращает столбец ошибки Roles.role не существует

запрос

select * from "Roles"  Join "Users"  On Roles.Role=Users.RoleId

ошибка возврата отсутствует запись предложения FROM для таблицы "роли"

как я могу решить эту проблему? Я всегда работаю с MS SQL

Ответы [ 3 ]

2 голосов
/ 24 октября 2009

Вы не можете использовать имя Роли в условии соединения. Внутренне все имена таблиц, такие как Роли, РОЛИ, роли, RoLeS, преобразуются в роли (в нижнем регистре). Когда вы используете "Roles", "ROLES", "role", "RoLeS", имя используется точно так, как вы написали (без преобразования в нижний регистр), поэтому в части FROM взяты таблицы "Roles" и "Users" и в условии соединения имена таблиц - это роли и пользователи, и таких таблиц не существует.

Самый простой способ - использовать только имена таблиц без "", просто используйте простые роли вместо "Роли", чтобы вы могли писать роли или роли независимо от букв в нижнем / верхнем регистре.

0 голосов
/ 25 октября 2009

Я подозреваю, что вам нужно было написать "Roles"."Role" = "Users"."RoleId", потому что он жалуется на невозможность найти имя столбца в нижнем регистре.

Как уже упоминали другие, обычно проще всего создать все в нижнем регистре, даже если вы используете смешанный регистр в запросах: так, если таблица называется "роли" и столбец "роль" и т. Д., Вы можете написать Roles.Role = Users.RoleId и идентификаторы будут преобразованы в нижний регистр за кулисами.

0 голосов
/ 24 октября 2009

напишите так:

select * from Roles  INNER JOIN Users  On (Roles.Role= Users.RoleId)

проверка ВНУТРЕННЕЕ СОЕДИНЕНИЕ две таблицы для получения дополнительной информации ...

или вы можете использовать простой способ работы с большинством СУБД:

select * from Roles,Users where Roles.Role= Users.RoleId
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...