看看这样行吗?没有试过
String sql = "select *,A.children from deeptree T,(select count(*) as children  from deeptree where parentid = T.id) as A where parentid="+NodeId+" order by id";

解决方案 »

  1.   

    这步还是有子查询吗? mysql是不支持子查询的,我要用MySQL
      

  2.   

    <%@ page contentType="text/html; charset=gb2312" language="java"  errorPage="" %>
    <%@ page import = "java.sql.*, java.io.*, java.util.*,com.javabean.SQLBean" %>
    <%
    response.setContentType("text/xml");ResultSet rs=null;String NodeId=(String)request.getParameter("id");
    if (NodeId==null){NodeId="1";}String ResponseXml="<?xml version='1.0' encoding='gb2312'?>\r\n";
    ResponseXml+="<xml>\r\n";SQLBean sqlbean = new SQLBean();
    String sql = "select *,(select count(*) from deeptree where parentid = T.id) as children from deeptree T where parentid="+NodeId+" order by id";try{rs = sqlbean.executeQuery(sql);
    if (rs!=null){
    while(rs.next()){
    ResponseXml+="<TreeNode id='"+java.net.URLDecoder.decode(rs.getString("id"))+"'>\r\n";
    ResponseXml+="<NodeText><![CDATA["+java.net.URLDecoder.decode(rs.getString("content"))+"]]></NodeText>\r\n";
    ResponseXml+="<title></title>\r\n";
    if(rs.getString("link")==null){
    ResponseXml+="<NodeUrl></NodeUrl>\r\n";
    }else{
    ResponseXml+="<NodeUrl><![CDATA["+java.net.URLDecoder.decode(rs.getString("link"))+"]]></NodeUrl>\r\n";
    }
             ResponseXml+="<child>"+java.net.URLDecoder.decode(rs.getString("children"))+"</child>\r\n";
    if(rs.getString("target") == null){
    ResponseXml+="<target></target>\r\n";
    }else{
    ResponseXml+="<target>"+java.net.URLDecoder.decode(rs.getString("target"))+"</target>\r\n";
    }
    ResponseXml+="</TreeNode>\r\n";
    }
    }
    }
    catch(Exception ex){
    System.out.println("Error in executeQuery(): \n" + sql +ex);
    }if(rs!=null){
        rs.close();
    }
    sqlbean.close();ResponseXml+="</xml>";
    out.write(ResponseXml);
    System.out.println(ResponseXml);%>
      

  3.   

    select *,count(parentid) as children from deeptree left join T on deeptree.parentid="+NodeId+" group by parentid order by id;
    你试试这个,不知道是不是你想要的结果
      

  4.   

    数据库中没有T,这个表呀!String sql = "select *,(select count(*) from deeptree where parentid = T.id) as children from deeptree T where parentid="+NodeId+" order by id";T是deeptree 的别名呀!!
      

  5.   

    哦.可能要让你失望了.
    这个语句只能通过子查询来实现.
    或者使用临时表了.如果不介意.
    可以使用 MySQL 4.1
      

  6.   

    如果是这样,那还真是个麻烦的事情,MySQL 4.1还没有稳定版,公司的是不会用的!所以我用这个开发也没有什么意义.
     
    非常感谢大家的帮助!
    我这个问题,如果分成两条语句执行,好像不行吧?
      

  7.   

    一般这样的 问题在mysql里面都是用建立零食表来处理的。你把子查询的结果建立一个领事表,然后完成后在删除掉如何?
    或者是把子查询的结果放到一个vector中。然后在用纯java来模拟数据库查询。