2012-03-20 3 views
0

조인을 통해 4 개의 테이블에서 데이터를 선택하는 쿼리가 있습니다. 일치하는 외래 키가 들어있는 다섯 번째 테이블의 숫자 행을 계산할 수도 있습니다.조인 후 테이블의 행 개수를 계산합니다.

이 내 현재의 쿼리처럼 보이는, 그것이

"SELECT 
        ph.pheed_id,ph.user_id,ph.datetime,ph.repheeds, 
        ph.pheed,fav.id,fav.P_id,fav.datetime as stamp, 
        u.username,ava.avatar_small 
        COUNT(pheed_comments.comment_id) as comments 
        FROM favourite_pheeds fav 
        INNER JOIN pheeds ph ON ph.pheed_id=fav.P_id 
        INNER JOIN users u ON u.id=ph.user_id 
        INNER JOIN profiles pr ON pr.user_id=ph.user_id 
        LEFT JOIN user_avatars ava ON ava.avatar_id=pr.avatar 
        ORDER BY stamp DESC 
        LIMIT $offset,$limit"; 

이 어떻게 일치하는 외래 키를 포함하는 다섯 번째 테이블의 행 번호를 세는 작업을 나던 것입니다.

+0

다섯 번째 테이블에서 일치하는 개수를 찾으려면 INNER JOIN을 사용하십시오. – Teja

+0

작동하지 않는다면 무엇을 의미합니까? 구문 오류가 발생합니까? 아니면 결과가 비어 있습니까? – rekire

+0

@rekire 예 구문 오류가 발생합니다. – MrFoh

답변

1
select ph.pheed_id, 
    ph.user_id, 
    ph.datetime, 
    ph.repheeds, 
    ph.pheed, 
    fav.id, 
    fav.P_id, 
    fav.datetime as stamp, 
    u.username, 
    ava.avatar_small, 
    coalesce(pcc.Count, 0) as comments_count 
from favourite_pheeds fav 
inner join pheeds ph on ph.pheed_id = fav.P_id 
inner join users u on u.id = ph.user_id 
inner join profiles pr on pr.user_id = ph.user_id 
left join user_avatars ava on ava.avatar_id = pr.avatar 
left outer join (
    select pheed_id, count(*) as Count 
    from pheed_comments 
    group by pheed_id --took a guess at the column name here 
) pcc on ph.pheed_id = pcc.pheed_id 
order by stamp desc 
LIMIT $offset, $limit 
관련 문제