Мне нужен результат из двух таблиц, одна из которых является родительской таблицей, а другая - дочерней, а также родительской таблицей для дочерних записей подуровня.
если я выполняю SQL-запрос, например:
SELECT cc.collection_id, cc.title, cc.type, cc.alias as forum_alias,
SUBSTRING(cc.description,1,200) as short_desc,
COUNT(b1.boardmessage_id) as total_threads,
COUNT(b2.boardmessage_id) as total_replies
FROM contentcollections cc
JOIN boardmessages b1 ON b1.parent_id = cc.collection_id
JOIN boardmessages b2 ON b2.collection_id = cc.collection_id
WHERE cc.type=1
AND cc.is_active=1
AND b1.parent_type='collection'
AND b1.is_active=1
AND b2.parent_type IN('message','reply','reply_on_reply')
GROUP BY cc.collection_id
ORDER BY cc.created DESC;
это дает мне неправильный результат с таким же количеством общих потоков и таким же количеством общих ответов. Но когда я делаю что-то подобное
SELECT cc.collection_id, cc.title,cc.type, cc.alias as forum_alias,
SUBSTRING(cc.description,1,200) as short_desc,
(SELECT COUNT(boardmessage_id)
FROM boardmessages
WHERE parent_type='collection'
AND collection_id=cc.collection_id
AND is_active=1) as total_threads,
(SELECT count(boardmessage_id)
FROM boardmessages
WHERE parent_type IN('message','reply','reply_on_reply')
AND collection_id=cc.collection_id AND is_active=1) as total_replies
FROM contentcollections cc
WHERE cc.type=? AND cc.is_active=?
ORDER BY cc.created DESC
Это дает мне правильный ответ.
Я подозреваю, что я использую подзапросы во втором варианте, так что это может замедлить производительность рендеринга страницы.
Пожалуйста, предложите мне то же самое. Любая помощь или предложение будут с благодарностью.
Спасибо