2016-01-20 68 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 
相關問題