已知有三个变量:$A,$B,$C已知$A和$B的关系:
$a=>array(b1,b2,b3,b4,b5....)
$b是一个集合,其中b1,b2,...bn是变量B的序号,$a对应$b的最大值的序号,如$a=>b2(b2序号对应的值最大)又知$B的序号和$C的关系$bn=>$c
($b的序列号对应的$c,其中$c是bn对应的名称,如b2=>123)请问怎么把这三个变量的关系放在一张表上?
$a bn $c
类似:
ad 3 123 这样?
$a=>array(b1,b2,b3,b4,b5....)
$b是一个集合,其中b1,b2,...bn是变量B的序号,$a对应$b的最大值的序号,如$a=>b2(b2序号对应的值最大)又知$B的序号和$C的关系$bn=>$c
($b的序列号对应的$c,其中$c是bn对应的名称,如b2=>123)请问怎么把这三个变量的关系放在一张表上?
$a bn $c
类似:
ad 3 123 这样?
5=>biu
89=>sas
...假如获得的$b最大值匹配89,结果就是:$a 89 sas
找出 $b 中最大的键值,$b_max再从$a 中找出 $b_max,找出就返回。
a与b是一对多的关系,
b与c是一对一的关系.
放到一个表就是说,a要有冗余
a, b, c
a 2 abc
a 5 biu
a 89 sas取b的最大值
select a,b,c from table order by b desc limit 0
或者使用max函数配合子查询
1 b是一个人员优先级表 至少有b_id,sort_num
2 c是一个人员属性表 至少有有c_id,name
3 a似乎是一个最高优先级表 至少有a_id他们关系如下
1 c_id是b_id的外键
2 最大的b.sort_num所对应的b.b_id=a.a_id结合在一张表的话,那就是
id(人员id),name(姓名),sort_num(优先级),flag(最高优先级flag)可以理解为当将某人选为最高优先者时,将其sort_num更新为规则上的最大值
a与b是一对多的关系,
b与c是一对一的关系.
b的最大值是经过比较得出的。我最终的结果是找到:$a=>$b的最大值=>$b的最大值对应的$c然后将它们关系起来放在页面上(自制表,非数据库的table)。
$a,$b放在一张database table1中,这里可求得$b的最大值另有关系$a=>array($b1,$b2,...,$bn),这里可求得$a=>$b_max$b的值和对应的$c放在另一张database table2中$b1=>$c1
$b2=>$c2
......
$bn=>$cn现在怎么通过table1的$b_max的值找到table2中对应的$bn(n=1,n=2,...),再将结果关联:
$a=>$b的最大值=>$b的最大值对应的$c
FROM `table1` t1
LEFT JOIN table2 t2 ON t1.b = t2.b
WHERE 1
GROUP BY t1.a始终不太明白,不知道这个是不是?
$b_max不能够通过max()函数求出来,现在我已知$b_max,只要关联另一张表的$bn和$c就可以了。
$b = array('a', 'c', 'd', 'e');
将他们排序之后会变成$a = array(1, 2, 4, 9);
$b = array('a', 'c', 'd', 'e');
循环将他们
$arr = array();
$num = count($a) > count($b)? count($a): count($b);
$num_min = count($a) > count($b)? $b: $a;
for($i = 0; $i < $num; $i++){
if(isset($num_min[$i])){
$arr[][$b[$i]] = $a[$i];
}else{
//$arr[][$i] = $a[$i];
}
}
echo '<pre>';print_r($arr);
$b_max通过数组$a=>array($b1,$b2,...,$bn),已求得$a和$b_max对应的$b_max_num的关系。
例如:$a=>$b2.
现在$b_max_num 和$c 放在另一张表中。关系:$b_max_num=>$c现在怎么把这些都关联起来?$a $b_max_num $b_max_num对应的$c
$a = array(1, 2, 9, 4, 7);
$b = array('a', 'c', 'd', 'e');sort($a);
sort($b);$arr = array();
$num = count($a) > count($b)? count($a): count($b);
$num_min = count($a) > count($b)? $b: $a;
for($i = 0; $i < $num; $i++){
if(isset($num_min[$i])){
$arr[][$b[$i]] = $a[$i];
}else{
//$arr[][$i] = $a[$i];//去掉注释看看
}
}
echo '<pre>';print_r($arr);
按照你最初的说法,
b本身可以建一个表table_1bn b_value
1 22
2 4
3 89b序号与c对应关系表table_2
bn c_value
1 aaa
2 xv
3 fdaf那么你要得到的数据是
a bn b_value c_value
3 3 89 fdaf至于你说的把这个关系放在一张表里,始终没明白你的意思,那么多php技术分不知道你怎么得的,描述都这么模糊。如果是得出结果的话,sql写法如下
select a.bn, a.b_value, b.c_value from table_1 a inner join table_2 b on a.bn=b.bn order by a.b_value desc limit 1;
请看22#,
$a对应数组$b_max_num a=>array($b1,$b2,...,$bn).按你的理解最后得出的结论关系:$a $bn $bn对应的$c 这三项关系。
$b[2]最大,所以$a等于2。我是这么理解你这句话的。不知道是我理解错了,还是你说的问题
这样说吧:
$a=>array(10,25,51,36,191);
其中10,25,51,36,191这些代表$b_max_num。$b_max_num => $c10=>abc
25=>bcd
51=>ccc
...然后把这些项都关联起来:$a $b_max_num $ca 10 abc
ab 25 bcd
....象这样的情况。
FROM `table1` t1
LEFT JOIN table2 t2 ON t1.b = t2.b
WHERE t1.b='$b_max_num'你最好将你所有的相关的数据结构都拿出来看看。
你一点都没说明白,个人感觉,你也许想复杂了!
现在是有关系:
$a=>array $b_max_num
例如:
$a=>array(10,20,51,36)
其中10,20,51,36代表的就是$b_max_num。现在主要是有个表:
里面储存的信息是$b_max_num $c
每个$b_max_num有唯一的$c对应。我想要的关系是$a $b_max_num $b_max_num唯一对应的$c
对两个表里的$b都处理得到$b_max_numWHERE t1.$b_max_num=t2.$b_max_num
$bin2test_item = array(3=>array(),
4=>array(),
5=>array(),
6=>array(),
7=>array(),
8=>array(1,2,7,9,10,11,24,25,26,44,45,47,54,55,56,57,58,59,60,61,27,62,63,64,65,68,69,70,71,74,76,77,
79,85,86,87,88,89,91,92,90,147,148,149,150)
);
function foo($s, $t) {
$p = split('\|', $s);
do{
//print_r($p);
$n = array_search(max($p), $p);
//if(@in_array($n, $t)) return $n;
if(@in_array($n, $t) && max($p)!=0) return $n;
unset($p[$n]);
}while($p);
return '-';
} for($i=0;$i<count($save);$i++)
{
?>
<tr class="cells" onmouseover="this.className='cells2'" onmouseout="this.className='cells'">
<td width=30%>
<?php
echo trim($save[$i]);
?>
</td>
<td width=40%>
<?php
echo trim("Bin ".$resultsArray[$save[$i]]);
?>
</td>
<td width=30%>
<?php
foreach($arr3 as $bin => $binItem)
{
if ($bin == $resultsArray[$save[$i]] )
echo foo($binItem, $bin2test_item[$bin]);
}
?>
其中‘foo($binItem, $bin2test_item[$bin])’相当于$b_max_num , '$resultsArray[$save[$i]]'相当于$a.现在有一张新的数据库表,里面的内容是$b_max_num,$c,两者一一对应。我是想问,如何把这三者联系起来,且一一对应。
$sql = "select * from(select bin,testitem from dutbin order by did desc)A
union all
select * from(select bin,testitem from dutbin_v58b_nt order by did desc)B
union all
select * from(select bin,testitem from dutbin_v58b_yz order by did desc)C
union all
select * from(select bin,testitem from dutbin_u68a_nt order by did desc)D
union all
select * from(select bin,testitem from dutbin_u68a_yy order by did desc)E";
$stmt = @OCIParse($con,$sql);
@OCIExecute($stmt,OCI_DEFAULT);
@OCIFetchInto($stmt,&$rows,OCI_RETURN_LOBS);
//print_r($rows);
//=================================================
$row_bin = $rows[0];
$row_testitem = $rows[1];
$arr3 = explode(",", $row_testitem);
现在已知前三项和其关系。另外有张表,存了testitem的序号和对应的品名($c)。我现在要把数据放入对应的单元格中。
代码如下:<?php
$bin2test_item = array(3=>array(),
4=>array(),
5=>array(),
6=>array(),
7=>array(), 8=>array(1,2,7,9,10,11,24,25,26,44,45,47,54,55,56,57,58,59,60,61,27,62,
63,64,65,68,69,70,71,74,76,77, 79,85,86,87,88,89,91,92,90,147,148,149,150)
);
function foo($s, $t) {
$p = split('\|', $s);
do{
//print_r($p);
$n = array_search(max($p), $p);
//if(@in_array($n, $t)) return $n;
if(@in_array($n, $t) && max($p)!=0) return $n;
unset($p[$n]);
}while($p);
return '-';
} for($i=0;$i<count($save);$i++)
{
?>
<tr class="cells" onmouseover="this.className='cells2'" onmouseout="this.className='cells'">
<td width=30%>
<?php
echo trim($save[$i]);
?>
</td>
<td width=40%>
<?php
echo trim("Bin ".$resultsArray[$save[$i]]);
?>
</td>
<td width=30%>
<?php
foreach($arr3 as $bin => $binItem)
{
if ($bin == $resultsArray[$save[$i]] )
echo foo($binItem, $bin2test_item[$bin]);
}
?>
<td width=25%>
<?php?>
</td>
<?php
}
?>
<?php
foreach($arr3 as $bin => $binItem)
{
if ($bin == $resultsArray[$save[$i]] )
$x = foo($binItem, $bin2test_item[$bin]);
foreach($arr4 as $key => $info){//$arr4是表中所有记录
if($x==$info("binItem"))//不知道你的字段
echo $info("info");
}
}
?>你试试看吧……
$sql = "select testitem_no,testitem_info from testitem order by did desc";
$result = oci_parse($con,$sql);
oci_execute($result);
$arr4 = oci_fetch_row($result);
print_r($arr4);
结果只有一行。数据库里查询出来不止一行。Array ( [0] => 99 [1] => abcabc )
还有字段类型分别是什么??bn又是图片上的什么和什么根据什么得来的??都要说清楚。可能是我思维不够,我一直觉得一片混乱。
另外有一张表,包含信息$b_max_num和$b_max_num一一对应的$c。现在要图中的$b_max_num的值和数据库表中$b_max_num的值相等时,取出$c的值。求$c的值放入图的表格中。
<td width=30%>
<?php
echo trim($save[$i]);
?>
</td>
<td width=40%>
<?php
echo trim("Bin ".$resultsArray[$save[$i]]);
?>
</td>
<td width=30%>
<?php
foreach($arr3 as $bin => $binItem)
{
if ($bin == $resultsArray[$save[$i]] )
echo foo($binItem, $bin2test_item[$bin]);
}
?>
<td width=25%>
<?php
//求$C值对应的代码
?>
</td>
<?php
}
?>
看你的图上也只有一行啊 ! 是不是foo($binItem, $bin2test_item[$bin])的值有问题
难道你要显示所有的?那就把那个判断去掉。不知道你到底要什么……
慢慢懂你的意思了,但你肯定搞复杂了。