有点不太明白你的意思,不过thinkphp的查询可以使用这种方法,你上面有两个表,假设用户表就叫做user,文章表叫做paper,那你就可以这样:$dao=M("user"); $rs=$dao-table('user as u,paper as p')-field('u.xxxx,p.xxxx')-select();
成都创新互联服务项目包括宁津网站建设、宁津网站制作、宁津网页制作以及宁津网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,宁津网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到宁津省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
其中field()方法是你要查找的字段,如果在你两张表没有字段名是重复的情况下,你也是可以不用这个方法的。这样就把你要查找的资料存放到一个组数$rs里面了
本人用ThinkPHP3.2,今天正在开发一个需要分组显示的功能,可是从数据库中把相应数据读取后直接用group分组,结果每组显示的是最老的记录,我的需求是要显示每组的最新记录。在网上大搜一翻后,未果,本人决定自行研究,现将方法记录于此以防遗忘。
其实很简单,以供就两步:
第一步:
将符合条件的数据全部取出,暂不用group分组,作为子查询:
[php] view plain copy
$subQuery = $model-field('id,name')-table('tablename')-where($where)-order('time desc')-select(false);
第二部:
利用子查询进行查询分组
[php] view plain copy
$model-table($subQuery.' a')-group('field')-select();span style="font-family: Arial, Helvetica, sans-serif;" /span
好了,思路就是这样。希望对大家有帮助!
?php
if($_POST['cid']){//拿到分组的ID值
$sql = "SELECT * FROM `deptuser` WHERE `cid` = ".$_POST['cid'];
$result = mysql_query($sql);
if($result mysql_num_rows($result)){
while($rows = mysql_fetch_assoc($result)){
$arr[] = $rows;
}
}else{
echo "没有成员数据";
}
}
foreach ($arr as $key = $value) {
if ($key == 'uid') {
$newname['name'] = getUserName($value);
}else{
$newname[$key] = $value;
}
}
//这个就是分组下带用户名的数组
print_r($newname);
function getUserName($uid){
$sql = "SELECT name FROM `user` WHERE `uid` = ".$uid;
$result = mysql_query($sql);
if ($result) {
$rows = mysql_fetch_assoc($result);
return $rows;
}else{
echo "查询没有用户名";
}
}
?
//也可以这样
//?php
$sql = "SELECT a.name,a.id,b.uid,b.cid FROM user as a,deptuser as b WHERE a.uid = b.uid AND b.cid = ".$_POST['cid'];
?
望采纳 Thx
分组查询原理都是SQL的分组查询,THINKPHP中只是用到他自己的一些自定义的方法!比如 join()、group()、having()方法等,实际对应的也是SQL里的这些关键字!
例如本次需求是要按照cid进行分组,按照通常的做法是 SELECT * FROM 表名 GROUP BY cid,这样就能按照cid进行分组筛选!然后使用THINKPHP的时候则使用 M('表名')-group('cid')-select(); 实际生成的语句和原始SQL代码是一样的。
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款