postgreSQL Exklusionsverknüpfung
-
06-07-2019 - |
Frage
ich habe SQL-Abfrage
select * from "Roles" Join "Users" On "Roles".Role="Users".RoleId
zurückgeben Fehlerspalte Roles.role existiert nicht
query
select * from "Roles" Join "Users" On Roles.Role=Users.RoleId
return Fehler FROM-Klausel fehlender Eintrag für die Tabelle "Rollen"
Wie kann ich dieses Problem lösen? i aways arbeiten mit MS SQL
Lösung
Sie können die Namen von Rollen in der Join-Bedingung verwenden. Intern werden alle Tabellennamen wie Rollen, Rollen, Rollen, Rollen sind in Rollen (Kleinbuchstaben) umgewandelt. Wenn Sie auf „Rollen“ verwenden, „Rollen“, „Rollen“, „Rollen“ ist der Name genau verwendet, wie Sie, dass (keine Kleinbuchstaben convertion) geschrieben haben, so in der FROM-Teil getroffen werden, „Rollen“ und „Benutzer“ Tabellen und in der Join-Bedingung die Tabellennamen sind Rollen und Benutzer und solche Tabbles nicht existieren.
Der simples Weg ist nur Tabellennamen zu verwenden, ohne „“ Verwenden Sie nur einfache Rollen anstelle von „Rollen“, so dass Sie Rollen oder Rollen schreiben können unabhängig die Buchstaben Groß- / Kleinschreibung.
Andere Tipps
schreiben Sie es wie auf diese Weise:
select * from Roles INNER JOIN Users On (Roles.Role= Users.RoleId)
INNER JOIN zwei Tabellen für weitere Informationen. ..
oder Sie können die einfache Art und Weise verwenden, dass es mit den meisten DBMS funktioniert:
select * from Roles,Users where Roles.Role= Users.RoleId
Ich vermute, Sie benötigen "Roles"."Role" = "Users"."RoleId"
zu schreiben, weil es in der Lage, beschwert ist über nicht die Kleinspaltennamen zu finden.
Wie andere erwähnt haben, ist es in der Regel am einfachsten alles wie Kleinbuchstaben zu erstellen, auch wenn Sie in Abfragen gemischten Fall verwenden: so, wenn die Tabelle „Rollen“ bezeichnet wird und die Spalte „Rolle“ usw. können Sie schreiben Roles.Role = Users.RoleId
und die Identifikatoren werden konvertiert Fall hinter den Kulissen zu senken.