2012-07-28 145 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