2012-07-28 143 views
0

我有3个表users(name, email), reviews(review, entity, user) and votes(vote, entity, user),我想做一个查询,返回给定的特定实体的所有评论,如果用户已经投票支持该实体,则从投票表投票,否则null应该在那里在投票的地方。我写的查询是加入3个表sql加入

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' 

但这查询导致了一些评论多行, 我做了它的工作使用GROUP BY,由我无法理解的左连接行为,

回答

1

你是不是对于任何特定的实体加盟票,请尝试以下操作:

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

by子句记住组作为OP说:“但这查询导致了一些评论多行,我做了它的工作通过使用组......” – danihp 2012-07-28 15:33:14

+0

感谢名单,其工作... :) – Sourabh 2012-07-28 15:35:38

+0

我窝uld必须看到工作版本,但我怀疑通过添加一个group来验证结果是否正确。该查询仍然在查找实体'entity_id'的评论,但是会为来自同一用户的任何实体投票。 – Carl 2012-07-28 15:37:37