0

私はSQLクエリを持っています

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

エラー列を返しますRoles.roleは存在しません

クエリ

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

テーブル「ロール」のFROM句エントリがない場合にエラーを返します

どうすればこの問題を解決できますか?私は離れてmssqlで動作します

4

3 に答える 3

2

結合条件でRolesという名前を使用することはできません。内部的には、Roles、ROLES、roles、RoLeSなどのすべてのテーブル名がロールに変換されます(小文字)。「Roles」、「ROLES」、「roles」、「RoLeS」を使用する場合、名前は記述したとおりに使用されるため(小文字変換なし)、FROM部分では「Roles」テーブルと「Users」テーブルが使用されます。結合条件では、テーブル名はロールとユーザーであり、そのようなタブブルは存在しません。

簡単な方法は、「」のないテーブル名のみを使用することです。「ロール」の代わりに単純なロールを使用するだけで、小文字/大文字に関係なくロールまたはロールを記述できます。

于 2009-10-24T11:08:40.070 に答える
0

このように書いてください:

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

詳細については、 INNERJOIN2つのテーブルを確認してください...

または、ほとんどのDBMSで機能する簡単な方法を使用できます。

select * from Roles,Users where Roles.Role= Users.RoleId
于 2009-10-24T11:06:49.513 に答える
0

"Roles"."Role" = "Users"."RoleId"小文字の列名が見つからないという不満があるので、書く必要があると思います。

他の人が述べているように、クエリで大文字と小文字を混在させて使用する場合でも、通常はすべてを小文字として作成するのが最も簡単です。したがって、テーブルが「ロール」、列が「ロール」などと呼ばれる場合は、書き込むことができRoles.Role = Users.RoleId、識別子が変換されます。舞台裏で小文字にします。

于 2009-10-25T12:57:01.437 に答える