2014-12-01 4 views
0

У меня есть две таблицы:граф и группа по

exp_channel_titles T (parent table) 
exp_category_posts P (many to many table that links to T via column entry_id) 

Мне нужно знать, сколько записей в каждой категории каждый author_id имеет в P с помощью author_id, entry_id полей из T, где T.channel_id = 7.

например.

SELECT cat_id, author_id 
FROM exp_channel_titles t, exp_category_posts p 
WHERE t.channel_id = 7 
AND t.entry_id = p.entry_id 
GROUP BY p.cat_id 
GROUP BY t.author_id 

ответ

1

Попробуйте это:

SELECT 
    p.cat_id, 
    t.author_id, 
    count(*) as cat_entries 
FROM 
    exp_channel_titles t 
    join exp_category_posts p on t.entry_id = p.entry_id 
WHERE 
    t.channel_id = 7 
GROUP BY 
    p.cat_id, 
    t.author_id 
+0

Это хорошо, но обратите внимание, что при определенных обстоятельствах, возможно, должны быть немного более осторожным о том, что подсчитываются! – Strawberry

+0

@Strawberry True, обычно я бы (и должен был) квалифицировать 'count (*)' с псевдонимом таблицы, похожим на 'count (t. *)', Но так как я не был полностью уверен, на какой таблице информация для подсчета был сохранен, я подсчитал количество запросов на основе группировки. – JRLambert

+0

Фактически, вы не можете рассчитывать на t. *! – Strawberry

Смежные вопросы