2

いくつかのテーブルを結合してデータを受信しようとしていますが、期待どおりに機能していません。これが私のクエリです:

SELECT USR.PK_User AS PKUser
    ,USR.NAME AS NAME
FROM [User] USR
LEFT JOIN aspnet_Users ASPU ON USR.NAME = ASPU.UserName
LEFT JOIN aspnet_UsersInRoles ASPUIR ON ASPU.UserId = ASPUIR.UserId
WHERE ASPUIR.RoleId = 'E8700479-902A-42F1-A500-4FA02CAC356C'

このクエリからは何も返されません。しかし、もしそうなら:

SELECT * FROM [aspnet_UsersInRoles] WHERE RoleId = 'E8700479-902A-42F1-A500-4FA02CAC356C'

選択した 76 行を取得します。私がそうするなら:

SELECT USR.PK_User AS PKUser
    ,USR.NAME AS NAME
FROM [User] USR
LEFT JOIN aspnet_Users ASPU ON USR.NAME = ASPU.UserName
LEFT JOIN aspnet_UsersInRoles ASPUIR ON ASPU.UserId = ASPUIR.UserId

期待される行が返されます。さらに、追加すると:

WHERE ASPUIR.RoleId IS NULL 

行を戻します。

私は何を間違っていますか?

4

2 に答える 2

1

これを試して:-

SELECT USR.PK_User AS PKUser,
   USR.NAME    AS NAME
FROM   [User] USR
   LEFT JOIN aspnet_Users ASPU
     ON USR.NAME = ASPU.UserName
   LEFT JOIN aspnet_UsersInRoles ASPUIR
     ON ASPU.UserId = ASPUIR.UserId
        AND ASPUIR.RoleId = 'E8700479-902A-42F1-A500-4FA02CAC356C' 
于 2013-09-27T20:05:33.310 に答える