2014-04-15 2 views
-3

나는 이름별로 사용자 및 모든 관련 엔터티를 하나의 쿼리로 선택하십시오.

Users(Id, Name) 
UserClaims(Id, UserId, Type, Value) 
UserLogins(ProviderName, ProviderKey, UserId) 
UserRoles(UserId, RoleId) 
Roles(Id, Name) 

어떻게 하나의 쿼리의 이름으로 모든 관련 기관이있는 사용자를 선택할 수 있나요? 당신은 단지 관련 테이블을 조인 할 같은

+2

특정 문제를 명확히하거나 정확히 무엇을 강조하기 위해 추가 정보를 추가하시기 바랍니다 필요한 것. 현재 작성된 내용이므로 귀하가 원하는 내용을 정확하게 말하기는 어렵습니다. How to Ask 페이지에서이 질문에 대한 설명을 참조하십시오. – Kermit

+1

3k + 담당자가있는 사용자가 질문을 올바르게 형식화하는 방법을 알고 있다고 생각할 것입니다 ... – jpw

+0

name = @name과 같은 선택 쿼리가 필요하지만 모든 관련 엔터티를 결합하십시오 – user960567

답변

1

그것은 소리 등이 같은 아마 뭔가가 있다면 당신은 무엇을 찾고 :

SELECT * 
FROM Users U 
INNER JOIN UserClaims UC ON U.Id = UC.UserId 
INNER JOIN UserLogins UL ON U.Id = UL.UserId 
INNER JOIN UserRoles UR ON U.Id = UR.UserId 
INNER JOIN Roles R ON R.Id = UR.RoleId 
WHERE U.Name = 'name' -- or @name or whatever way you pass the variable... 
+1

모든 관련 테이블에 적어도 사용자 당 하나의 레코드. 이것이 사실이 아니라면 LEFT JOIN insted를 사용하십시오. – Pred

+0

예 LEFT JOIN – user960567

+0

@Pred Indeed가 필요합니다. 쿼리는 적절한 경우 LEFT JOIN으로 쉽게 조정할 수 있어야합니다. – jpw

관련 문제