【发布时间】:2011-10-23 03:53:59
【问题描述】:
我需要两个表的结果,其中一个是父表,另一个是子表以及父表,它自己用于子级子条目。
如果我像这样执行 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
它给了我正确的答案。
我怀疑我在第二个选项中使用了子查询,因此它可能会降低页面渲染的性能。
请给我同样的建议。任何帮助或建议将不胜感激。
谢谢
【问题讨论】:
-
通过这个链接...stackoverflow.com/questions/6724183/…它可能会帮助你。