在连接后计算表中的行

时间:2012-03-20 20:24:23

标签: php mysql sql

我有一个通过连接从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";

如何计算包含匹配外键的第五个表中的行数。

1 个答案:

答案 0 :(得分: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