$sns=$db->field('distinct(dname)' as 'd_name','count(dname)' as 'tjs')->where(array('lid'=>intval($_get['id']),'islottery'=>1))->group('dname')->order('tjs desc')->select();
回复讨论(解决方案) 表,,查?後?果。
你要提供?些才可以知道?句怎啊。
distinct 是关键字,而不是函数
不能这样用:distinct(dname)
用了也没效果
但可以放在聚类函数中,比如 count(distinct dname) 统计 dname 有多少种状态
这是我想要的,但是还是一只菜鸟,不知该怎么写!
public function exporttj(){ //$objreader = phpexcel_iofactory::createreader('excel5'); header(content-type: text/html; charset=utf-8); header(content-type:application/vnd.ms-execl); header(content-disposition:filename=tongji.xls); // 以下\t代表横向跨越一格,\n 代表跳到下一行,可以根据自己的要求,增加相应的输出相,要和循环中的对应哈 //字段 $letterarr=explode(',',strtoupper('a,b')); $arr=array( array('en'=>'d_name','cn'=>'门店名称'), array('en'=>'tjs','cn'=>'领取次数'), ); $chengitem=array('piaomianjia','shuifei','yingshoujine','yingfupiaomianjia','yingfushuifei','yingfujine','dailishouru','fandian','jichangjianshefei','ranyoufei'); $i=0; $fieldcount=count($arr); $s=0; //thead foreach ($arr as $f){ if ($sfield('distinct(dname) as d_name,count(dname) as tjs')->where(array('lid'=>intval($_get['id']),'islottery'=>1))->group('dname')->order('tjs desc')->select(); //$sns=$db->where(array('lid'=>intval($_get['id']),'islottery'=>1))->order('tjs desc')->select(distinct(dname) as d_name, count(dname) as tjs); //$sns=array('select distinct(dname) as d_name, count(dname) as tjs from $db where 'lid'==intval($_get['id']) and 'islottery'==1 group by dname order by tjs desc'); if ($sns){ if ($sns[0]['token']!=$this->token){ exit('no permission'); } foreach ($sns as $sn){ $j=0; foreach ($arr as $field){ $fieldvalue=$sn[$field['en']]; switch ($field['en']){ default: break; case 'd_name': $fieldvalue=iconv('utf-8','gb2312',$fieldvalue); break; } if ($j'd_name','cn'=>'门店名称'),
array('en'=>'tjs','cn'=>'领取次数'),
);
$chengitem=array('piaomianjia','shuifei','yingshoujine','yingfupiaomianjia','yingfushuifei','yingfujine','dailishouru','fandian','jichangjianshefei','ranyoufei');
$i=0;
$fieldcount=count($arr);
$s=0;
//thead
foreach ($arr as $f){
if ($s echo iconv('utf-8','gbk',$f['cn']).\t;
}else {
echo iconv('utf-8','gbk',$f['cn']).\n;
}
$s++;
}
//
$db=m('lottery_record');
$sns=$db->where(array('lid'=>intval($_get['id']),'islottery'=>1,'dname' != null))->field('count(sn) as tjs,dname as d_name')->group('d_name')->order('tjs desc')->select();
//$sns=$db->where(array('lid'=>intval($_get['id']),'islottery'=>1))->order('tjs desc')->select(distinct(dname) as d_name, count(dname) as tjs);
//$sns=array('select distinct(dname) as d_name, count(dname) as tjs from $db where 'lid'==intval($_get['id']) and 'islottery'==1 group by dname order by tjs desc');
if ($sns){
if ($sns[0]['token']!=$this->token){
exit('no permission');
}
foreach ($sns as $sn){
$j=0;
foreach ($arr as $field){
$fieldvalue=$sn[$field['en']];
switch ($field['en']){
default:
break;
case 'tjs':
$fieldvalue=iconv('utf-8','gb2312',$fieldvalue);
break;
case 'd_name':
$fieldvalue=iconv('utf-8','gb2312',$fieldvalue);
break;
}
if ($j echo $fieldvalue.\t;
}else {
echo $fieldvalue.\n;
}
$j++;
}
$i++;
}
}
exit();
}
}
你这种写法应该是thinkphp吧?
据我所知好像tp不支持这样的,不过你可以写原生的sql。
