$sql=mysql_query("select MAX(YR_SC) as MAX_Y ,CODE,PAR,PRC_N,PRC_U from bse_prc_p where CDE_L='".substr($code,0,11)."' and YR_SC=MAX_Y");我将{ MAX(YR_SC) as MAX_Y  }  YR_SC 的最大值 赋值给 MAX_Y ,输出的时候可以显示,但是我在语句最后加了一个条件YR_SC=MAX_Y  的时候为什么就不显示东西了? 请教一下,最近发了很多类似的帖子,都是搞不定思路,然后又换了一种思路
有没有更好的赋值方法?

解决方案 »

  1.   

    因为你还有没有查询完呢(只是正在查询)你and MAX_Y它哪知道MAX_Y是什么啊
      

  2.   

    --try
    select YR_SC as MAX_Y ,CODE,PAR,PRC_N,PRC_U from bse_prc_p as t
    where CDE_L='".substr($code,0,11)."'
    and  YR_SC=(select max(YR_SC) from bse_prc_p where CODE=t.CODE)
      

  3.   

    那这样写对不对啊?
    $sql=mysql_query("select MAX(YR_SC) as MAX_Y from bse_prc_p where CDE_L='".substr($code,0,11)."'");
    $sql1=mysql_query("select YR_SC,CODE,PAR,PRC_N,PRC_U from bse_prc_p where CDE_L='".substr($code,0,11)."' and YR_SC='MAX_Y' ");我试了,怎么还是不行啊?
      

  4.   

    楼主还没明白么?
    $sql=mysql_query("select MAX(YR_SC) as MAX_Y ,CODE,PAR,PRC_N,PRC_U from bse_prc_p where CDE_L='".substr($code,0,11)."' and YR_SC=MAX_Y");第一个红字还没有得到,第二个都开始用了你说可以么?他肯定是找不到这个东西了
      

  5.   


    $sql=mysql_query("select MAX(YR_SC) as MAX_Y ,CODE,PAR,PRC_N,PRC_U from bse_prc_p where CDE_L='".substr($code,0,11)."' and YR_SC=(select MAX(YR_SC) from bse_prc_p where CDE_L='".substr($code,0,11)."')");
      

  6.   

     <?php               $code=$_GET['code'];
                   $link=@mysql_connect("localhost","root","root") or die ("数据库链接失败".mysql_error());
                   mysql_select_db("bse",$link);
                   mysql_query("set names gb2312"); 
       $sql=mysql_query("select max(YR_SC) as MAX_Y from bse_prc_p where CDE_L='".substr($code,0,11)."'");
       $sql1=mysql_query("select YR_SC,CODE,PAR,PRC_N,PRC_U,sum(PRC_N) from bse_prc_p where CDE_L='".substr($code,0,11)."' and YR_SC='MAX_Y' ");               while($row=mysql_fetch_array($sql1)){   ?>
      <tr>
        <td height="30" align="left" bgcolor="#E0E0E0"><?php echo substr($row[1],12,3);?></td>
        <td height="30" align="left" bgcolor="#E0E0E0"><?php echo $row[2];?></td>
        <td height="30" align="right" bgcolor="#E0E0E0"><?php echo $row[3]; ?></td>
        <td height="30" align="right" bgcolor="#E0E0E0"><?php echo $row['0']; ?></td>
        <td height="30" align="right" bgcolor="#E0E0E0"><?php echo $row[4]; ?></td>
        <td height="30" align="right" bgcolor="#E0E0E0"></td>
      </tr>
                <?php 
        } 
    mysql_close($link);
       ?>
    能不能看下这个代码 哪地方出错了?  就是不显示数据
      

  7.   

    楼主可以这样
    $sql=mysql_query("select MAX(YR_SC) as MAX_Y ,CODE,PAR,PRC_N,PRC_U from bse_prc_p where CDE_L='".substr($code,0,11)."' and YR_SC=(select max(YR_SC) from bse_prc_p)");
      

  8.   

    sql语句的执行顺序,当执行where是MAX_Y根本不存在,
    不知道这样行不行,你可以试试:
    $sql=mysql_query("select CODE,PAR,PRC_N,PRC_U from bse_prc_p where CDE_L='".substr($code,0,11)."' and YR_SC=(select MAX(YR_SC) from bse_prc_p)");
      

  9.   

    最简单的sql的顺序:from->where->select 
      

  10.   

    $sql=mysql_query("select MAX(YR_SC) as MAX_Y ,CODE,PAR,PRC_N,PRC_U from bse_prc_p where CDE_L='".substr($code,0,11)."' and YR_SC=(select max(YR_SC) from bse_prc_p) GROUP BY CODE");
    通过GROUP BY CODE 确实可以将 YR_SC=最大值的记录都显示出来,但是如果我想加一个条件:在上面的条件的基础上 计算PRC_N 所有记录的和该怎么做?
    $sql=mysql_query("select MAX(YR_SC) as MAX_Y ,CODE,PAR,PRC_N,PRC_U,sum(PRC_N) from bse_prc_p where CDE_L='".substr($code,0,11)."' and YR_SC=(select max(YR_SC) from bse_prc_p) GROUP BY CODE");这样是不行的
    请问一下啊,有啥办法没有?
      

  11.   

    请使用having,  $sql=mysql_query("select MAX(YR_SC) as MAX_Y ,CODE,PAR,PRC_N,PRC_U from bse_prc_p where CDE_L='".substr($code,0,11)."' having YR_SC=MAX_Y");
      

  12.   

    但是 我想 在上面的条件的基础上 计算PRC_N 所有记录的和
    该如何做?
      

  13.   

    你的语句可以计算出来和把,只是按code分组计算的而已。
      

  14.   

    如果不按CODE分组的话,可以计算出来和,但是只有一条记录
      

  15.   

    那当然了,你查询最大值,他只有一个,所以只显示一行。你加上group by 分组他就按组查询最大值,所以他有多个,显示所行。你又要在此基础上求和,他也就只好按组求和了。
      

  16.   

    是啊,我加group by code 的话,再求和,它的和就是每条记录的 和 (也就是每条记录的PRC_N值) 而不是所有记录的PRC_N值的和,愁死了
    郁闷
      

  17.   

    我又来了两条语句不会$sql=mysql_query("select MAX(YR_SC) as MAX_Y ,CODE,PAR,PRC_N,PRC_U,sum(PRC_N) from bse_prc_p where CDE_L='".substr($code,0,11)."' and YR_SC=(select max(YR_SC) from bse_prc_p)"); 这个只显示一条记录,如果不用GROUP BY 分组的话,如何让它循环显示?
      

  18.   

    给出你的表结构和部分测试数据
    再清晰的描述一下你的需求max、sum 等函数默认只会产生一条查结果
      

  19.   

    $sql=mysql_query("select MAX(YR_SC) as MAX_Y ,CODE,PAR,PRC_N,PRC_U,sum(PRC_N),sum(PRC_U) from bse_prc_p where CDE_L='".substr($code,0,11)."' and YR_SC=(select max(YR_SC) from bse_prc_p)");这个语句就是只显示一条YR_SC为最大值的记录,但是YR_SC这个字段有很多一样的值,比如YR_SC=2009,上面的语句只显示一条YR_SC=2009的值,我想让它把所有的YR_SC=2009的记录都显示出来,
    是否够详细?不用GROUP BY  
    如果用 group by 的话,sum的值就不对了
      

  20.   

    如果用 group by 的话,sum的值就是单条PRC_N的记录值,sum就没效果了,
    有没有什么办法解决?
    我用两个语句也不对,就删掉了
      

  21.   

    select CODE,PAR,PRC_N,PRC_U from bse_prc_p where CDE_L='自己填' and YR_SC=(select MAX(YR_SC) from bse_prc_p);
    select MAX(YR_SC),sum(PRC_N) from bse_prc_p where ...试试吧,应该可以
      

  22.   

    或者先查max和sum,这样可以省一个子查询。