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可以实现这样的语句吗?

解决方案 »

  1.   


    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 
      

  2.   

    谢谢楼上,方法不成功用了楼上的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后面来着?
      

  3.   

    补充,我帖子里的那句SQL执行之后两个COUNT字段的值都等于其本身与另一个COUNT字段值的乘积
    难道SQL语句里面多COUNT就是会出问题的么?
      

  4.   

    sum函数结果离奇大
    在手册看SUM函数的时候发现一个DISTINCT关键字,用在COUNT里面,问题可以解决
    但效率异常低,比嵌套起来写要低得多。。饿。。谢谢4楼,结了