2011-09-05 93 views
2

我有三个表,我需要从中获取信息,其中一个表包含信息,另外两个包含需要统计的信息。多个mysql连接

所以第一个表结构为:

 
tbl_img 
img_id 
img_name 
 
tbl_comments 
comment_id 
img_id 
comment 
 
tbl_vote 
vote_id 
logo_id 

我想要的结果,有,涉及到每一个标识评论和投票计数。

我有一点点的评论计数,但不知道第二次连接的语法。

SELECT l.img_id, l.img_name, COUNT(c.comment_id) AS comment_count 
FROM tbl_images as l 
LEFT OUTER JOIN tbl_comments AS c USING (img_id); 

任何人都可以帮忙吗?

回答

2

这个怎么样:

SELECT l.img_id, l.img_name, 
(SELECT COUNT(*) FROM tbl_comments c WHERE i.img_id = c.img_id) AS comment_count, 
(SELECT COUNT(*) FROM tbl_vote v WHERE i.img_id = v.img_id) AS vote_count 
FROM tbl_images i 
+0

你怎么不必做任何加入? – Tony

+0

解决方案是使用子查询并将外部图像表i.img_id值传递给子查询。只有当子查询返回单个结果时,我们才可以做到这一点 –

+0

这两个子查询返回什么类型的值?列名? – 472084

0

听起来像是你需要为这个两个查询:一是计票,以及一个用于计数的意见。

据我所知,COUNT统计结果行,连接创建结果行以显示所有允许的连接表排列。

假设您有I个条目,每个条目都带有J个评论和K个投票,您将在连接之后为每个条目接收J * K行,并且COUNT都会返回该J * K而不是正确的数量。

我不记得你是否可以在MySQL中进行内部查询,但那将是一条路。 (请参阅@Kevin Burtons答案)