【发布时间】:2010-02-16 10:23:49
【问题描述】:
好的,我有一个来自设计不佳的数据库的复杂查询...在一个查询中,我需要从一个数据库中获取计数,从另一个数据库获取信息以及来自另一个数据库的链接,这里是:
每个博客都有一个类型(新闻、报告等)和网站特定部分的版块 ID,但它也可以链接到多个电脑游戏和版块)
type (blog_id, title, body, etc...) // 是的,我知道类型是博客的名称,而不仅仅是表中的 id 号,不是我的设计
blog_link (blog_id, blog_type, section_id, game_id)
blog_cmets(blog_id、blog_type、comment 等)
所以查询有点像这样:
SELECT bl.`blog_id`, count(bc.`blog_id`) AS 'comment_count', t.`added`
FROM blog_link bl
JOIN type t ON t.`id` = bl.`blog_id`
JOIN blog_comments bc ON (`item_id` = bl.`blog_id` AND `blog_type` = '[$type]')
WHERE bl.`section_id` = [$section_id] AND bl.`blog_type` = '[$type]'
GROUP BY bl.`blog_id`
ORDER BY `added` DESC
LIMIT 0,20
现在这很好,只要我没有多个游戏与一个博客相关联。
编辑:所以目前如果关联了多个游戏,comment_count 会乘以关联的游戏数量...不好。
我不知道我怎么能做到这一点......它只是不工作!如果我能在加入之前以某种方式按 blog_id 分组,那就太好了……有人有想法吗?
在此先感谢
- 多尔扬
edit2:我提供了赏金,因为这个问题肯定可以解决!!来吧,伙计们!
【问题讨论】:
-
您使用的是什么数据库?是否支持子查询?
-
@extraneon:标题写着“MySQL”(我添加的标签)
-
您的查询现在返回什么,您希望它返回什么?
-
"现在这很好,只要我没有多个游戏与一个博客相关联。"我已经编辑了主要文章。
-
我认为您的示例不完整。你写了
WHERE ia.section_id,但是ia没有定义...