Подсчет записей из разных таблиц

Рейтинг: 0Ответов: 1Опубликовано: 01.03.2015

Вопрос больше об оптимизации запроса. Дело в том, что пользователь может добавлять разного типа публикации (новости, статьи, заметки, фото). Все это хранится по разным таблицам.

Каков будет оптимальный запрос на подсчет публикаций каждого типа?

UNION ALL не подходит, так как в таблицах разное число колонок.

Сделал так, не знаю, насколько быстрый вариант:

SELECT (

SELECT IF(`Count` IS NULL, 0, `Count`)
FROM likes
WHERE IdNote = 600
) AS likes, (

SELECT COUNT( * ) 
FROM commenttousers
WHERE CommentToUsersIdToUser =600
) AS reviews
FROM likes, commenttousers
GROUP BY CommentToUsersIdToUser
LIMIT 0 , 30

В моем примере почему-то не работает условие IF.

Ответы

▲ 3Принят

В ответе на запрос о количестве строк нужного типа будет одинаковое количество колонок, его и суммируй через union

select sum(A.B) from (select count(*) as B from tab1 union all select count(*) as B from tab2) as A;