2011-11-28 2 views
0

두 테이블을 조인하고 두 번째 테이블의 합계를 노래 ID별로 계산하는 쿼리가 있습니다.이 쿼리에 AVG를 계산하는 두 번째 조인을 추가하려면 어떻게합니까?

동일한 노래 ID를 사용하여 번째 테이블 테이블 ($ sTable3)에 열 '평점'의 평균을 포함하도록이 쿼리를 수정하려면 어떻게해야합니까?

$sQuery = " 
     SELECT SQL_CALC_FOUND_ROWS ".str_replace(" , ", " ", implode(", ", $aColumns))." 

    FROM $sTable b 
    LEFT JOIN (
    SELECT COUNT(*) AS projects_count, a.songs_id 

    FROM $sTable2 a 
    GROUP BY a.songs_id 
) bb ON bb.songs_id = b.songsID 


     $sWhere 
     $sOrder 
     $sLimit 
    "; 

모든 JSON 배열에 넣고 나는 새 열 '등급'에서이 '평균'을 반환하고 싶습니다. (내가 아니라이 분명히 말하는되지 않을 수 있습니다 알고 있어요으로)

은 요약하면 : -

나는 세 개의 테이블 $ 안정, $ sTable2, $ sTable3 있습니다. 3 개 모두 songID 열을 공유합니다. 현재 쿼리가 처음 두 쿼리에 합류하고 원하는 모든 결과를 반환합니다. 그러나 나는 또한 $ sTable3의 '등급'열에서 songID와 관련된 데이터를 검색해야합니다.

+0

, 당신은 단지 SQL 쿼리를 보여 우리가 문제를 해결하기 위해 디코딩 할 필요가 PHP와 MySQL의하지 매시업한다. – Cylindric

+0

죄송합니다. 나는 이것을 누구에게나 어렵게 만들려고하지 않았고 내가 그렇게하고 있다는 것을 몰랐다. – gordyr

+0

편집 할 때 너무 늦지는 않습니다. 주요 문제는 Table1, Table2 또는 Table3에 실제로 포함되어있는 내용을 실제로 볼 수 없으므로 관련성을 알지 못해 조인 및 내용에 영향을 미칩니다. – Cylindric

답변

1

당신이 설정에 대해 좀 (알수없는 비밀스럽게 명) 변수를 많이 공개하지 않는 한, 문제를 많이 생각했다. 이 SQL 쿼리에 대한 질문이 있다면

SELECT songs.title, AVG(ratings.rating), COUNT(something.songs_id) 
FROM songs 
LEFT JOIN something ON (songs.songs_id=something.songsID) 
LEFT JOIN ratings ON (songs.songs_id=ratings.songsID) 
GROUP BY songs.title 
+0

당신은 생명의 은인입니다. 고마워요. 바보 같은 간단한 대답. 불행히도 저는 UI/프론트 엔드 엔지니어로서 DB에 대한 지식이 거의없이 백엔드 수정 작업을 수행했습니다. 너는 큰 도움이되었다. 고마워. – gordyr

관련 문제