你的位置:

问答吧

-> PHP基础

-> 问题详情

如何将从SQL语句读取的数据赋值给一个变量?

$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 的时候为什么就不显示东西了?

请教一下,最近发了很多类似的帖子,都是搞不定思路,然后又换了一种思路

有没有更好的赋值方法?

作者: hh022406

发布时间: 2010-09-06

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

作者: kyzy_yy_pm

发布时间: 2010-09-06

SQL code

--tryselectYR_SCasMAX_Y ,CODE,PAR,PRC_N,PRC_Ufrombse_prc_pastwhereCDE_L='".substr($code,0,11)."'andYR_SC=(selectmax(YR_SC)frombse_prc_pwhereCODE=t.CODE)

作者: Beirut

发布时间: 2010-09-06

那这样写对不对啊?

$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' ");

我试了,怎么还是不行啊?

作者: hh022406

发布时间: 2010-09-06

楼主还没明白么?

$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");

第一个红字还没有得到,第二个都开始用了你说可以么?他肯定是找不到这个东西了

作者: kyzy_yy_pm

发布时间: 2010-09-06

SQL code

$sql=mysql_query("selectMAX(YR_SC)asMAX_Y ,CODE,PAR,PRC_N,PRC_Ufrombse_prc_pwhereCDE_L='".substr($code,0,11)."'andYR_SC=(selectMAX(YR_SC)frombse_prc_pwhereCDE_L='".substr($code,0,11)."')");

作者: heyli

发布时间: 2010-09-06

PHP code
<?phpechosubstr ($row[1],12,3);?><?phpecho $row[2];?><?phpecho $row[3];?><?phpecho $row['0'];?><?phpecho $row[4];?><?php 
 
}mysql_close($link);?>

能不能看下这个代码 哪地方出错了? 就是不显示数据

作者: hh022406

发布时间: 2010-09-06

楼主可以这样

$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)");

作者: kyzy_yy_pm

发布时间: 2010-09-06

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)");

作者: s0s0s0s

发布时间: 2010-09-06

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

作者: s0s0s0s

发布时间: 2010-09-06

$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");

这样是不行的

请问一下啊,有啥办法没有?

作者: hh022406

发布时间: 2010-09-06

求教,高人

作者: hh022406

发布时间: 2010-09-06

请使用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");

作者: fangroger

发布时间: 2010-09-06

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

该如何做?

作者: hh022406

发布时间: 2010-09-06

having 貌似不行

作者: hh022406

发布时间: 2010-09-06

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

作者: s0s0s0s

发布时间: 2010-09-06

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

作者: hh022406

发布时间: 2010-09-06

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

作者: s0s0s0s

发布时间: 2010-09-06

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

郁闷

作者: hh022406

发布时间: 2010-09-06

各位,有啥办法求和没有?

作者: hh022406

发布时间: 2010-09-06

写两条语句吧,一条玩不成。

作者: s0s0s0s

发布时间: 2010-09-06

两条怎么写啊,赐教

作者: hh022406

发布时间: 2010-09-06

第一条就是上面的,你在单纯写一条求和的就是了。不要把求和跟分组查询放在一起。

作者: s0s0s0s

发布时间: 2010-09-06

我又来了

两条语句不会

$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 分组的话,如何让它循环显示?

作者: hh022406

发布时间: 2010-09-06

给出你的表结构和部分测试数据

再清晰的描述一下你的需求

max、sum 等函数默认只会产生一条查结果

作者: xuzuning

发布时间: 2010-09-06

$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的值就不对了

作者: hh022406

发布时间: 2010-09-06

如果用 group by 的话,sum的值就是单条PRC_N的记录值,sum就没效果了,

有没有什么办法解决?

我用两个语句也不对,就删掉了

作者: hh022406

发布时间: 2010-09-06