对PHP中对应的变量值,根据MYSQL表中的某列值,求出最大值 5
MYSQLB表id2|id1|c1|......1|1|y|......2|1|x|......3|1|z|......4|2|x|......5|3|y|......6...
MYSQL B表
id2 | id1 | c1 | ......
1 | 1 | y | ......
2 | 1 | x | ......
3 | 1 | z | ......
4 | 2 | x | ......
5 | 3 | y | ......
6 | 3 | y | ......
PHP中现有SQL语句 (注意:只能对我现有SQL添加语句,不能改动现有结构)
SQL = select *
from B表 b
left join A表 a on (......)
left join C表 c on (......)
left join D表 d on (......)
left join ......
where ...... 这里不能随便加条件,否则会影响我其它表输出值的
group by b.id2
order by a.id1 asc, b.id2 asc
PHP输出表
$a = ......; (自己定义的对应每个id2的变量值,$a值不在MYSQL表中,不要将它插入数据库)
对应结果显示
id2 | $a
1 | 100
2 | 300
3 | 200
4 | 500
5 | 400
6 | 600
表标题
<td>标题id1</td>
<td>标题id2</td>
<td>自定义标题</td>
<td>标题c1</td>
<td>更多标题</td>
表值
<td>id1值</td>
<td>id2值</td>
<td>$a 根据不同id2显示的不同值</td>
<td>c1值</td>
<td>与其它多张表关联的一些值</td>
-----------------------------------
我需要得到的是:
对相同的id1,求对应的$a的最大值
得到显示结果:
id1 | id2 | max $a | c1
1 | 1 | 300 | ......
1 | 2 | 300 | ......
1 | 3 | 300 | ......
2 | 4 | 500 | ......
3 | 5 | 600 | ......
3 | 6 | 600 | ......
while($row = mysql_fetch_array($result)){
$a = xxxxxx; (根据从C表等表调出的值,并且写的函数公式,这个我已写好,你不用管)
<table><tr>
<td>echo row['id1']</td>
<td>echo row['id2']<</td>
<td>echo $a</td>
<td>echo $max_a</td>
</tr></table>
}
id2是B表唯一值自动递增,表随时自动插入新记录,不能给id2指定某值,事先不知道'7'对应何值,只能对应$a。
$a是变量,是通过各表关联及插入记录写的公式而得,每插一条新记录id2,就有一个对应的$a值。
需要显示的就是max a那列的值
因为相同的id1会有1个或多个不同id2,每个id2会对应1个$a的值 展开
id2 | id1 | c1 | ......
1 | 1 | y | ......
2 | 1 | x | ......
3 | 1 | z | ......
4 | 2 | x | ......
5 | 3 | y | ......
6 | 3 | y | ......
PHP中现有SQL语句 (注意:只能对我现有SQL添加语句,不能改动现有结构)
SQL = select *
from B表 b
left join A表 a on (......)
left join C表 c on (......)
left join D表 d on (......)
left join ......
where ...... 这里不能随便加条件,否则会影响我其它表输出值的
group by b.id2
order by a.id1 asc, b.id2 asc
PHP输出表
$a = ......; (自己定义的对应每个id2的变量值,$a值不在MYSQL表中,不要将它插入数据库)
对应结果显示
id2 | $a
1 | 100
2 | 300
3 | 200
4 | 500
5 | 400
6 | 600
表标题
<td>标题id1</td>
<td>标题id2</td>
<td>自定义标题</td>
<td>标题c1</td>
<td>更多标题</td>
表值
<td>id1值</td>
<td>id2值</td>
<td>$a 根据不同id2显示的不同值</td>
<td>c1值</td>
<td>与其它多张表关联的一些值</td>
-----------------------------------
我需要得到的是:
对相同的id1,求对应的$a的最大值
得到显示结果:
id1 | id2 | max $a | c1
1 | 1 | 300 | ......
1 | 2 | 300 | ......
1 | 3 | 300 | ......
2 | 4 | 500 | ......
3 | 5 | 600 | ......
3 | 6 | 600 | ......
while($row = mysql_fetch_array($result)){
$a = xxxxxx; (根据从C表等表调出的值,并且写的函数公式,这个我已写好,你不用管)
<table><tr>
<td>echo row['id1']</td>
<td>echo row['id2']<</td>
<td>echo $a</td>
<td>echo $max_a</td>
</tr></table>
}
id2是B表唯一值自动递增,表随时自动插入新记录,不能给id2指定某值,事先不知道'7'对应何值,只能对应$a。
$a是变量,是通过各表关联及插入记录写的公式而得,每插一条新记录id2,就有一个对应的$a值。
需要显示的就是max a那列的值
因为相同的id1会有1个或多个不同id2,每个id2会对应1个$a的值 展开
1个回答
展开全部
循环2次
$a_array = array('1'=>100,'2'=>300,'3'=>200,'4'=>500,'5'=>400,'6'=>600);//对应的id2与a的关系值
$id1_max = array();
$list = array();
while($row = mysql_fetch_array($result)){
$a = $a_array[$row['id2']];
$list[] = $row;
if(isset($id1_max[$row['id1']]) && $id1_max['id1'] > $a) continue;
$id1_max[$row['id1']] = $a;//保存最大值
}
foreach($list as $row){
$row['a'] = $id1_max[$row['id1']];
print_r($row);
}
$a_array = array('1'=>100,'2'=>300,'3'=>200,'4'=>500,'5'=>400,'6'=>600);//对应的id2与a的关系值
$id1_max = array();
$list = array();
while($row = mysql_fetch_array($result)){
$a = $a_array[$row['id2']];
$list[] = $row;
if(isset($id1_max[$row['id1']]) && $id1_max['id1'] > $a) continue;
$id1_max[$row['id1']] = $a;//保存最大值
}
foreach($list as $row){
$row['a'] = $id1_max[$row['id1']];
print_r($row);
}
更多追问追答
追问
这个不能这样用啊:$a_array = array('1'=>100,'2'=>300,'3'=>200,......
id2是B表唯一值自动递增,表随时自动插入新记录,不能给id2指定某值,事先不知道'7'对应何值,只能对应$a。
$a是变量,是通过各表关联及插入记录写的公式而得,每插一条新记录id2,就有一个对应的$a值,我用while(......直接把此值显示在表中某列,用echo $a; 这个id2对应的值就自动显示了。
现在思路是:对相同的id1,求max( $a )
追答
我只是用个关联数组表示$id2与$a的关系
按你的说法是每条记录的,那就写个函数不就的了?
我说的关键在于2次循环
在第一次循环中你只能得到每行数据的$a,必定要到第二次循环才能得到最大值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询