2012-07-28 3 views
0

나는 3 개의 테이블 users(name, email), reviews(review, entity, user) and votes(vote, entity, user)을 가지고 있습니다. 특정 엔터티에 대해 주어진 모든 리뷰를 반환하는 쿼리를 만들고, 사용자가 해당 엔터티에 투표하면 투표 테이블에서 투표해야합니다. 그렇지 않으면 null이 있어야합니다. 투표소에서. 내가 쓴 쿼리가3 테이블에 가입하십시오. SQL join

select users.name as name, 
reviews.review as review, 
votes.vote as vote 
from 
users join reviews on users.email=reviews.user 
left join votes on users.email=votes.user 
where reviews.entity='entity_id' 

이다 그러나이 쿼리는 약간의 리뷰를 위해 여러 행을 결과한다, 가 나는

답변

1

당신이하지 않은, 왼쪽 조인의 행동을 이해 할 수없는 시까 지, 그룹화를 사용하여 작업했다 특정 개체에 대한 투표에 참여하면, 다음을 수행하십시오 : OP 말한대로

select users.name as name, 
reviews.review as review, 
votes.vote as vote 
from 
users join reviews on users.email=reviews.user 
left join votes on users.email=votes.user and reviews.entity = votes.entity 
where reviews.entity='entity_id' 
+0

이 조항에 의해 그룹을 기억 – danihp

+0

고맙습니다 "하지만이 쿼리는 약간의 리뷰를 위해 여러 행을 결과입니다, 나는 그것이 그룹에 의해 사용 작업 ...했다" , 그것의 작동 ... :) – Sourabh

+0

나는 우와 uld는 작동 버전을 확인해야하지만 그룹을 추가하여 결과가 정확할 것으로 의심됩니다. 쿼리는 여전히 'entity_id'엔티티에 대한 리뷰를 찾고 있지만 동일한 사용자의 모든 엔티티에 대해 투표합니다. – Carl