getting userbase vote average and individual user's vote in the same query?
        Posted  
        
            by Andrew Heath
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Andrew Heath
        
        
        
        Published on 2010-05-19T05:12:34Z
        Indexed on 
            2010/05/19
            5:20 UTC
        
        
        Read the original article
        Hit count: 274
        
Here goes:
T1
[id] [desc]
 1    lovely
 2    ugly
 3    slender
T2
[id] [userid] [vote]
 1      1       3
 1      2       5
 1      3       2
 2      1       1
 2      2       4
 2      3       4
In one query (if possible) I'd like to return:
T1.id, T1.desc, AVG(T2.vote), T2.vote (for user viewing the page)
I can get the first 3 items with:
SELECT T1.id, T1.desc, AVG(T2.vote)
FROM T1
LEFT JOIN T2 ON T1.id=T2.id
GROUP BY T1.id
and I can get the first, second, and fourth items with:
SELECT T1.id, T1.desc, T2.vote
FROM T1
LEFT JOIN T2 ON T1.id=T2.id
WHERE T2.userid='1'
GROUP BY T1.id
but I'm at a loss as to how to get all four items in one query. I tried inserting a select as the fourth term:
SELECT T1.id, T1.desc, AVG(T2.vote), (SELECT T2.vote FROM T2 WHERE T2.userid='1') AS userVote etc etc
but I get an error that the select returns more than one row...
Help?
My reason for wanting to do this in one query instead of two is that I want to be able to sort the data within MySQL rather than one it's been split into a number of arrays.
© Stack Overflow or respective owner