您的位置:首页 > 其它

剩下两个字段的内容

2017-11-13 22:08 162 查看
我要做的是一个双重循环中,查找一个表中与另一个表中时间相同的项,且一个字段的属性为order

首先,这个问题,我搞了基本快一天了,其实要明确这个问题是一个双重循环问题

其难点在于外层循环输出了整个表格,内层循环只输出了一个表格中的内容

目前test:什么是正确的测试数据结果?内层循环表格中的内容会被输出两次,且值是不同的

我的构想是,sql语句中加入时间的判断,这样的话,数据就会有20171111的两条,2017......的N条

外层循环是读取A表的数据,需要将A表中的date字段与B表中的add_time转化为date('Ymd')形式后比较判断

读取的是A表的3个日期,20171111,2017......,2017.......

那么在双层循环中,外层循环执行了3次

if(Adate==Badd_time)

Adate总共只有三条数据,Badd_time有N条,与其相等的有20171111的两条,2017.......的N条,这样就划分好了范围

关键是数据到底怎么输出?

等等,我突然想到了一个点子。

在外层循环中,执行在sql语句中统计Adate字段与B表中add_time相同的字段,那么20171111就是2条,2017.....的N条

$sql2="select count(*) as count from `hongbao_list` where source='order' and FROM_UNIXTIME(add_time,'Ymd')=".$val('date');

$sql2="select count(*) as count from `hongbao_list` where source='order' and FROM_UNIXTIME(add_time,'Ymd')=".$val('date');


$res2 = $this->_db->query($sql2);

while($result=$this->_db->fetch_array($res2))

由于是在外层循环中,所以会得到两个数据结果,就是我们想要的20171111的2条,2017......的N条

加上为空判断,直接输出

if(!empty($result)){

  echo $result['count'];

}

个人感觉这个思路是OK的,SQL语句会执行3次,其中一次是空的,另外两次则统计出了Adate与Badd_time相同的字段的数量

内层循环中的数据会是有多少条?大概会是两条,所以即是外层循环执行3次,内层循环执行2次,在if语句中加上break

等等,SQL语句中的count应该只会返回一个数据结果,所以:

$result=$this->_db->fetch_array($res2);

去掉while,直接输出应该就可以了

也就是不需要内层循环了,那样问题就简单多了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: