User 테이블에서 UserType, UserID, FirstName, LastName, UserName을 선택하려고합니다. 사진 테이블에서 PhotoURL을 사용할 수 있으면 선택합니다. 레코드가 존재하지 않으면 (UserType - 관리자는 사진 테이블에 레코드 만 있음) 공백을 보내야합니다.Select 문에 선택 값을 입력하는 사례가 있음 - SQL Server
쿼리는 다음과 같습니다. 더 나은 쿼리를 생각한다면 제안하십시오.
Select UserType, UserID, FirstName, LastName, UserName,
CASE
WHEN EXISTS(
SELECT PhotoURL FROM Photos WHERE Photos.UserID = Users.UserID AND UserType = 'admin' AND Photos.PhotoNum = 1
)
THEN (
SELECT PhotoURL FROM Photos WHERE Photos.UserID = Users.UserID AND UserType = 'admin' AND Photos.PhotoNum = 1
)
ELSE ''
END AS PhotoURL
from Users
당신이 작동하지 않는 시도 쿼리를되어 사용하지 않는? 그렇지 않은 경우 오류가 무엇입니까? –
하위 쿼리가 두 개 이상의 값을 반환했습니다. 하위 쿼리가 =,! =, <, <= , >,> = 또는 하위 쿼리가 식으로 사용될 때이 하위 쿼리가 계속되는 경우에는 허용되지 않습니다. – dotNETEngineer
그 오류는 동일한 'UserID'에 대해 두 개 이상의'PhotoNum '1이 있음을 의미합니다. 제안 된'LEFT JOIN' 기법을 사용하여 동일한 사용자에 대해 여러 행을 반환 할 수 있지만, 기본 키나 고유 제한이 'UserID'와'PhotoNum'에 있어야한다고 생각하기 때문에 데이터 문제가있을 수 있습니다. 사진'테이블. –