提示 ( 附近有错误
  t 附近有错误
( 附近有错误
 if (product_type == "2")//如果是手机
        {
            StringBuilder  sql =new StringBuilder("select  top  (cast('" + PageSize + "' as int)) * from M_phone a left join ( select * from m_phoneimages b where id=( select top 1 id from m_phoneimages where pid=b.pid))t  on a.id=t.pid ");            sql.Append(" where   a.id>( select ISNULL(MAX(xx.id),0)  from ( select  TOP (cast('" + PageSize + "' as int) * (cast('" + CurrentPage + "' as int)-1)) id  from m_phone  where 1=1 ");            if (type != null)
            {
                sql.Append("  and  type=@type ");
            }        sql.Append("   ORDER BY id)xx   ) ");        if (type != null)
            {
                sql.Append("  and  a.type=@type ");
            }            sql.Append("   ORDER BY a.id ");

解决方案 »

  1.   

    on a.id=t.pid 
    AND a.id=t.pid 
      

  2.   

    看这语法,像是MSSQL吧?
    MSSQL起别名要用AS的
      

  3.   

    join ....on 后面要先跟表名 再来条件
      

  4.   


    if (product_type == "2")//如果是手机
            {
                StringBuilder  sql =new StringBuilder("select  top  (cast('" + PageSize + "' as int)) * from M_phone a left join ( select * from m_phoneimages b where id=( select top 1 id from m_phoneimages where pid=b.pid))t  on a.id=t.pid ");            sql.Append(" where   a.id>( select ISNULL(MAX(xx.id),0)  from ( select  TOP (cast('" + PageSize + "' as int) * (cast('" + CurrentPage + "' as int)-1)) id  from m_phone  where 1=1 ");            if (type != null)
                {
                    sql.Append("  and  type=@type ");
                }        sql.Append("   ORDER BY id)xx    ");/*這里多了一个括号*/        if (type != null)
                {
                    sql.Append("  and  a.type=@type ");
                }            sql.Append("   ORDER BY a.id ");
      

  5.   

    "select  top  cast('" + PageSize + "' as int) * 
    应该是TOP()这样不对,上面弄错了,没看到有连接
      

  6.   


    跟踪程序,把sql语句打印出来。然后找问题。会容易一些。
      

  7.   

    2000可能不支持top (10)这样的类型。你再把这两边的括号去掉试下。
    我这里没有SQL 2000,没办法给你测试。
    我在MYSQL下select * from tab1 limit 10(limit相当于MSSQL里面的top)如果我把limit 10改成limit (10),这样查询就会报错
      

  8.   

    晕的,刚才发出去的没成功。
    2005上可能支持top(10)这样的格式,而在2000上不支持。我这里没有MSSQL 2000,所以没办法给你测试了。
    不过我在MYSQL上这样测试select * from tab limit 10(limit相当于MSSQL的TOP),我如果把limit 10改成limit (10)却会报错,有可能这也是一个问题
      

  9.   


    有可能是这个,SQL2000种top后面是一个真实数,不能通过计算的,SQL2005就支持计算,select top 15/5 * from table
      

  10.   


          if (type != null)
                {
                    sql.Append("  and  type=@type ");
                }        sql.Append("   ORDER BY id)xx   ) ");        if (type != null)//怎么还执行2次!=null呢
                {
                    sql.Append("  and  a.type=@type ");
                }
      

  11.   

    if (product_type == "2")//如果是手机
            {/*这个括号没有匹配的结束*/
                StringBuilder  sql =new StringBuilder("select  top  (cast('" + PageSize + "' as int)) * from M_phone a left join ( select * from m_phoneimages b where id=( select top 1 id from m_phoneimages where pid=b.pid))t  on a.id=t.pid ");            sql.Append(" where   a.id>( select ISNULL(MAX(xx.id),0)  from ( select  TOP (cast('" + PageSize + "' as int) * (cast('" + CurrentPage + "' as int)-1)) id  from m_phone  where 1=1 ");             if (type != null)
                {
                    sql.Append("  and  type=@type ");
                }        sql.Append("   ORDER BY id)xx    ");/*這里多了一个括号*/        if (type != null)
                {
                    sql.Append("  and  a.type=@type ");
                }            sql.Append("   ORDER BY a.id ");