USER_ROLES
Oracle10gで次のような名前のテーブルがあります。
USER_ROLE_ID USER_ID AUTHORITY
28 2 ROLE_ADMIN
45 3 ROLE_USER
61 3 ROLE_ASSISTANT
27 3 ROLE_SUPERVISOR
USER_ID
テーブルの外部キーはどこにありますかUSER_TABLE
。特定のユーザー()に関連付けられた行のグループから特定の行の行番号を知る必要があります(USER_ID
このテーブルのすべての行に基づくわけではありません)。
次のSQLは、このテーブルのすべての行にUSER_ROLE_ID
基づいて、特定の(この場合は28)の行番号を取得します。
select row_num from
(select row_number() over (order by user_role_id desc) as row_num, user_role_id
from user_roles order by user_role_id desc)
where user_role_id=28
この場合、3が表示されます。
ただし、特定のユーザーにのみ関連付けられている行のグループから行番号を取得する必要があります。そのために、次のSQLを試してみると、
select row_num from
(select row_number() over (order by user_role_id desc) as row_num, user_role_id
from user_roles order by user_role_id desc)
where user_id=2 and user_role_id=28
この場合、私はWHERE
からの句を変更しました
where user_role_id=28
に
where user_id=2 and user_role_id=28
次のエラーが発生します。
ORA-00904: "USER_ID": invalid identifier
では、このシナリオでは、特定のユーザーに関連付けられている行のみから行番号を取得する方法は何ですか?