DISTINCT 是关键字,而不是函数
不能这样用:DISTINCT(dname)
用了也没效果
但可以放在聚类函数中,比如 count(DISTINCT dname) 统计 dname 有多少种状态

解决方案 »

  1.   

    本帖最后由 xuzuning 于 2014-07-06 10:38:11 编辑
      

  2.   

    field('dname AS d_name,COUNT(dname) AS tjs')
    GROUP('d_name')
      

  3.   

    麻烦版主再帮我看看,怎么是这个结果呢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 ($s<$fieldCount-1){
    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<$fieldCount-1){
    echo $fieldValue."\t";
    }else {
    echo $fieldValue."\n";
    }
    $j++;
    }
    $i++;
    }
    }
    exit();
    }


    }
      

  4.   

    你这种写法应该是thinkphp吧?
    据我所知好像tp不支持这样的,不过你可以写原生的sql。