2013-07-21 62 views
0

我有一張表,它可以提供有關網站各種消息投票的信息。 的表稱爲votations,並通過形成:ID,MESSAGEID,用戶ID,投票選擇消息,計算投票的平均值,並知道用戶是否已投過票

我想要檢索的所有數據「信息」表,計算「votations」表中的平均投票,並知道如果一個指定的用戶(檢查userID到「投票」表)已經投了或沒有。這是查詢檢索平均

select m.*, AVG(votes) as average_valuation from messages m 
left join votations v on v.messageID = m.id 
group by m.id 

假設我收到的用戶標識已POST數據消息和各自的票,查詢應該告訴我,如果他已經在LEFT中投的消息,連接過程。我該怎麼做?

+0

是(messageID,userID)UNIQUE的每個組合嗎?如果是這樣,爲什麼它不是主要的? – Strawberry

+0

是的,它是獨一無二的..我應該設置爲主要? – user2590550

+0

嗯,這取決於你 - 但在我看來,在這種情況下,你的代理鍵是多餘的。 – Strawberry

回答

0

嘗試子查詢

select 

m.*, 
(
select count(1) from messages m1 
where m1.id=m.id 
and [email protected] 
) as VotedAlready, 

AVG(votes) 
as average_valuation from messages m 
group by m.id 

像..

您還可以添加其他查詢。