MYSQL多字段COUNT如何处理?

siemenliu 2009-09-07 03:28:12
SELECT parent.*, COUNT(node.CategoryID), COUNT(domain.PortfolioID)
FROM categories_new AS parent
LEFT JOIN categories_new AS node ON node.lft > parent.lft AND node.rgt < parent.rgt
LEFT JOIN portfolios as domain ON domain.CategoryID = parent.CategoryID
GROUP BY parent.CategoryNameCN
ORDER BY parent.lft

语句如上
其中两个count字段统计两个LEFT进来的数据,但是两个COUNT数据之间有相互影响
不用嵌套SQL可以实现这样的语句吗?
...全文
862 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
siemenliu 2009-09-08
  • 打赏
  • 举报
回复
sum函数结果离奇大
在手册看SUM函数的时候发现一个DISTINCT关键字,用在COUNT里面,问题可以解决
但效率异常低,比嵌套起来写要低得多。。饿。。谢谢4楼,结了
YHL27 2009-09-07
  • 打赏
  • 举报
回复
学习!!
xuzuning 2009-09-07
  • 打赏
  • 举报
回复
用 sum 函数
siemenliu 2009-09-07
  • 打赏
  • 举报
回复
补充,我帖子里的那句SQL执行之后两个COUNT字段的值都等于其本身与另一个COUNT字段值的乘积。。。
难道SQL语句里面多COUNT就是会出问题的么?
siemenliu 2009-09-07
  • 打赏
  • 举报
回复
谢谢楼上,方法不成功

用了楼上的SQL提示一下错误

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LEFT JOIN categories_new AS node ON node.lft > parent.lft AND node.rgt < parent.' at line 3

我记得LEFT JOIN不能跟在ORDER BY后面来着?
phpboy 2009-09-07
  • 打赏
  • 举报
回复

SELECT parent.*, COUNT(node.CategoryID), COUNT(domain.PortfolioID)
FROM categories_new AS parent ORDER BY parent.lft
LEFT JOIN categories_new AS node ON node.lft > parent.lft AND node.rgt < parent.rgt
LEFT JOIN portfolios as domain ON domain.CategoryID = parent.CategoryID
GROUP BY parent.CategoryNameCN

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧