여기 간다 :같은 쿼리에서 사용자 기반 투표 평균과 개별 사용자의 투표를 얻고 있습니까?
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
하나 개의 쿼리 (가능한 경우) 내가 돌아 싶습니다 년 :
T1.id, T1.desc, AVG(T2.vote), T2.vote (for user viewing the page)
내가 가진 첫번째 3 개 항목을 얻을 수 있습니다 :
SELECT T1.id, T1.desc, AVG(T2.vote)
FROM T1
LEFT JOIN T2 ON T1.id=T2.id
GROUP BY T1.id
과 첫 번째, 두 번째 및 네 번째 항목은 다음과 함께 얻을 수 있습니다.
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
하지만 한 쿼리에서 네 가지 항목을 모두 얻는 방법에 관해서는 분실했습니다. 나는 네 번째 용어로 선택을 삽입하는 시도 :
SELECT T1.id
, T1.desc
, AVG(T2.vote)
, (SELECT T2.vote
FROM T2
WHERE T2.userid='1') AS userVote
etc
etc
하지만 난 select returns more than one row...
도움말이 오류가?
두 가지 쿼리 대신 하나의 쿼리에서이 작업을 수행하려는 이유는 여러 배열로 분할되지 않고 MySQL 내에서 데이터를 정렬 할 수 있기를 원합니다.
저기있다! 데이빗 감사합니다. 나는 (SELECT)로 올바른 방향으로 가고 있었지만 끝내라는 노하우를 가지고 있지 않았다. 나는 LEFT JOIN .. USING()을 본적이 없다. USING이이 쿼리에 어떤 영향을 미치는지 읽어야한다. ** 감사합니다. ** ** – Drew