2
试图保存一个步骤,并结合这两个查询,但不知道如何去做最好的。基本上,第一个查询是获取我们系统中的评论列表,第二个查看是否发送了通知(如果有返回的结果,那么它已发送)。结合查询
获得评价:
SELECT r.*,
coalesce((SELECT AVG(rr.rating)
FROM `" . DBTABLEPREFIX . "reviews_ratings` rr
WHERE rr.review_id = r.id
)
, ''
) AS rating,
FROM `" . DBTABLEPREFIX . "reviews` r
WHERE BELOW SELECT IS 0 RESULTS
检查,如果存在的通知(是的,我知道这本身不工作):
SELECT rn.*
FROM `" . DBTABLEPREFIX . "reviews_notifications` rn
WHERE rn.website_id = r.website_id
AND rn.post_id = r.post_id
,以便恰当地做到这一点的方式任何想法?此外,如果您想知道为什么我们无法在通知表上检查r.id,因为每天都会使用新数据清除评论和reviews_ratings表。该进程稍后可能会被重写为不杀,但仅添加新项目。
感谢,正是我一直在寻找! – spyke01 2012-01-27 15:07:34
通过做第二个,而不是合并,提高效率多少?它看起来像查询可能只运行一次,而不是每次像我的查询。 – spyke01 2012-01-27 23:24:21
你可以在课程中测试它。但第二次写入意味着将首先计算派生表(结果在分组之后),并且此派生表将加入评论表。 – 2012-01-27 23:27:10