2012-03-20 2 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 
Смежные вопросы