2016-01-20 34 views
0

我运行此查询包含1列(S)和我正在**#1241 - 操作数应包含1列(S)**错误:MySQL的#1241 - 操作数应在计算

SELECT `forumCategories`.`id`, `forumCategories`.`name`, `forumCategories`.`order`, `forumCategories`.`description`, `forumCategories`.`date_created`, COUNT(forumPosts.forumCategory_id) as postCount, 
    (SELECT `forumPosts`.*, `forumChildPosts`.`id`, `forumChildPosts`.`forumPost_id`, COUNT(forumChildPosts.forumPost_id) as childCount FROM `forumChildPosts` LEFT JOIN `forumPosts` ON `forumPosts`.`id` = `forumChildPosts`.`forumPost_id` GROUP BY `forumPosts`.`id`) AS childCount 
    FROM `forumCategories` 
    LEFT JOIN `forumPosts` ON `forumCategories`.`id` = `forumPosts`.`forumCategory_id` 
    GROUP BY `forumCategories`.`id` 
    ORDER BY `forumCategories`.`order` DESC 

我有3个表:

forumCategories 
forumPosts | forumPosts.forumCategory_id = forumCategories.id 
forumChildPosts | forumChildPosts.forumPosts_id = forumPosts.id 

我想计数论坛类别的所有讯息,和他们我要统计所有属于该论坛类别孩子的帖子。我怎样才能做到这一点?

+0

你的外在选择查询去抓取列好,直到到'COUNT(forumPosts.forumCategory_id)AS postCount,'您要发送一个子查询后,但它试图获取多列如'childCount'。问题从它出现。 – FZE

回答

0

您不能使用子选择选择多个项目,然后给它们一个名称。现在你从forumPosts,forumChildPosts等获得了一切,并试图将其放入单个列childCount中。这是不允许的。

从该选择中删除所有其他结果列可能就足够了,只留下count

0

我无法尝试它,这是有道理的吗?但是由于其限制,你无法从mysql获得嵌套结果,MYSQL是一个Matrix表。

SELECT `forumCategories`.`id`, 
     `forumCategories`.`name`, 
     `forumCategories`.`order`, 
     `forumCategories`.`description`, 
     `forumCategories`.`date_created`, 
     COUNT(forumPosts.forumCategory_id) AS postCount, 
     (SELECT COUNT(forumChildPosts.forumPost_id) AS childCount FROM `forumChildPosts` LEFT JOIN `forumPosts` ON `forumPosts`.`id` = `forumChildPosts`.`forumPost_id` GROUP BY `forumPosts`.`id`) AS childCount 
FROM `forumCategories` 
LEFT JOIN `forumPosts` ON `forumCategories`.`id` = `forumPosts`.`forumCategory_id` 
GROUP BY `forumCategories`.`id` 
ORDER BY `forumCategories`.`order` DESC 
相关问题