利用数组拼接来代替连表查询
来源:互联网 发布:比特彗星tcp端口阻塞 编辑:程序博客网 时间:2024/06/05 19:27
有时候多表连表查询比较麻烦容易出错,效率上也不一定有单表快。我们可以用单表查询来代替连表查询。
单表查询需要用把结果拼接起来。
情形:表A,表B 关系 在B表中a_id = A表中id。表A与表B是1对多的关系或者是1对1的关系
$ar =$db->('select * form A where 条件 ')
$ar 二维数组
$ids=array_column($ar,'id');$br=$db->('select * from B where a_id in ('.join(',',$ids).') ');//二维数组算法1:常规思路,用两个数循环判断 foreach($ar as $k=>$v){ foreach($br as $k1=>$v1){ if($v['id']==$v1['a_id']){ $ar[$k]['b_list'][]=$v1; } } }以上这种思路代码逻辑清晰,不过两个foreach循环,感觉不太好。算法2:先把数组$br用一个新数组拼装下,在与数组$ar拼接$cr=[];foreach($br as $k=>$v){ $cr[$v['a_id']][]=$v; //如果A与B是一对一关系:$cr[$v['a_id']]=$v; }foreach($ar as $k=>$v){ if(isset($cr[$v['id']])){ $ar[$k]['b_list']=$cr[$v['id']]; }else{ $ar[$k]['b_list']=[]; }}这种算法虽然代码多点,却仅仅循环了两次就得到了结果。比算法1更好
阅读全文
0 0
- 利用数组拼接来代替连表查询
- 巧妙利用连表查询拆分字符串
- access 连表查询
- Oracle 连表查询
- mysql 连表查询
- sql连表查询
- 连表更新、查询
- 连表查询
- Dapper 连表查询
- SQLServer 连表查询
- 连表查询
- mysql连表查询
- SQL连表查询
- 连表查询
- 数据库连表查询
- SQL连表查询
- oracle连表查询
- 连表查询
- android 拼图小游戏
- mysql常用语句
- Android Studio更新成2.3以后Gradle大坑拯救法!
- 第二个案例(猜拳游戏)
- 六、rabbitMQ Routing
- 利用数组拼接来代替连表查询
- 学习笔记1
- muse-ui上手 图标不显示问题
- Python如何引入自定义模块?
- Java注解(Annotation)详解(一)——概述及JDK自带注解
- FatFS文件系统详解-附移植建议
- lower_bound和upper_bound
- Spark重点难点知识总结(一)
- ROS 运行rqt rqt_graph出现段错误(核心已转储) 解决方法