2013-02-07 2 views
1
Select 1 
from Friend 
where Friend.UserID = 1 
    and FriendID = (select User.UserID from User where UserName = 'friend_user'); 

내가하려는 것은 사용자가 다른 사용자와 "친구"인지 확인하는 것입니다. 따라서 사용자가 "foo.com/user/username"으로 이동하면 사용자 이름이 전달되고 검사를하면됩니다. 내가 두 개의 선택을 사용하지 않는 것이 좋겠지 만 그렇게하는 유일한 방법 인 것 같습니다. 이와 같은 작업을 수행하는 가장 좋은 방법에 대한 제안은 인정 될 것입니다.이 두 select 문을 하나로 최적화 할 수 있습니까?

+0

** 두 개의 선택 항목을 사용하고 있지 않습니다 **. 공동 선택 부속 조회가있는 단일 선택이 있습니다. 현대 DBMS (및 적절한 쿼리 최적화 프로그램)를 사용하면 성명서 및 승인 된 솔루션의 효율성에 차이가 없을 가능성이 매우 높습니다. –

답변

1

당신이 사용할 수있는 JOIN 대신 :

Select 1 
from Friend f 
join User u 
    on f.FriendID = u.UserID 
    and u.UserName = 'friend_user' 
where 
    f.UserID = 1; 
+0

이 작업은 가능하지만 친구 UserName과 같은 User 테이블에서 항목을 선택하려면 어떻게해야합니까? – carboncomputed

+1

@ user979663 이것은'JOIN'을 사용할 때 쉽습니다. 'SELECT' 문에 필드를 추가하고'u' 테이블 별칭으로 접두사를 붙이기 만하면됩니다. –

+0

좋아, 그 모든 지금 시작하기 위해 시작하는 haha – carboncomputed

1

에 답 : "이것은 내가 친구 이름과 같은 같은 사용자 테이블에서 물건을 선택하고 싶다면 작동하지만, 무엇을? -"

Select u.username, count(f.friends) 
from Friend f 
join User u 
    on f.FriendID = u.UserID 
    and u.UserName = 'friend_user' 
where 
    f.UserID = 1; 
관련 문제