2012-04-05 7 views
0

私は以下の3つのテーブルを持っています。私は各ユーザーの役割を比較しようとしています。つまり、私はJaneが1の時にJohnが2つの役割を持っていることを示したいと思っています。現在のところ、私はそれらの間の共通の役割しか示していません。T-SQLを比較する2ユーザーネーム

  • Sec_role (PK R_KEY, rname)
  • Role_User(PK R_KEY, PK USER_KEY)
  • User(PK USER_KEY, Name)

サンプルデータ:

Sec_Role   Role_User  User 

R_Key|rname|  R_Key|User_Key User_KEY|NAME 
1 |Analyst  1 |1   1  |John 
2 |Sysadmin 2 |1   2  |Jane 
        2 |2 

私は

User | Role | User2 | Role2 
John | Analyst | Jane | (Empty because she isn't an analyst) 
John | sysadmin| Jane |Sysadmin 
を取得しようとしています
SELECT U.Name AS User1, 
     U2.Name AS User2, 
     R.rname AS Role1 
     R2.Rname AS Role2 
FROM Sec_Role AS R 
LEFT OUTER JOIN Role_User AS RU 
ON R.R_Key=RU.R_Key 
LEFT OUTER JOIN User AS U 
ON U.User_Key=RU.User_Key 

LEFT OUTER JOIN Sec_Role AS R2 
ON R2.R_Key=R.R_Key <---(I think this is the issue here) 
LEFT OUTER JOIN Role_User AS RU2 
ON R2.R_Key=RU2.R_Key 
LEFT OUTER JOIN User AS U2 
ON U2.User_Key=RU2.User_Key 

WHERE U.Name ='John' 
AND U2.Name='Jane' 

現在、私はこの2人のユーザーの交差点を取得しています。

User | Role | User2 | Role2 
John | sysadmin| Jane |Sysadmin 
+0

ヘルプを試してみてくださいなぜですか?あなたは何を得ているのか説明していない。 – Oded

+0

私はこれらのユーザーの交差点を取得しています。それらの間に共通点があります。 – Alex

+0

おそらくあなたが求めているものを理解することが難しい各テーブルのサンプルデータを投稿してください。 – Randy

答えて

1
WHERE U.Name ='John' 
OR U2.Name='Jane' 

ノートAN ORないと

4列

SELECT U.Name AS User, 
      R.rname AS Role 
    FROM Sec_Role AS R 
    LEFT OUTER JOIN Role_User AS RU 
    ON R.R_Key=RU.R_Key 
    LEFT OUTER JOIN User AS U 
    ON U.User_Key=RU.User_Key 
    where uName in ('','') 
    order by 1, 2 

は_what_この

SELECT U.Name AS User1, 
    U2.Name AS User2, 
    R.rname AS Role1 
    R2.Rname AS Role2 
FROM Sec_Role AS R 
LEFT OUTER JOIN Role_User AS RU 
ON R.R_Key=RU.R_Key 
LEFT OUTER JOIN User AS U 
    ON U.User_Key=RU.User_Key 
    and U.Name ='John' 

LEFT OUTER JOIN Sec_Role AS R2 
ON R2.R_Key=R.R_Key <---(I think this is the issue here) 
LEFT OUTER JOIN Role_User AS RU2 
ON R2.R_Key=RU2.R_Key 
LEFT OUTER JOIN User AS U2 
    ON U2.User_Key=RU2.User_Key 
    AND U2.Name='Jane' 
+0

4列の理由 – Paparazzi

+0

ユーザー名を下に表示するのではなく、隣に表示する必要があります。 – Alex

+0

ORは正常に動作しましたか? – Paparazzi