ホームページ  >  記事  >  バックエンド開発  >  このクエリ ステートメントは正しくどのように記述すべきでしょうか?

このクエリ ステートメントは正しくどのように記述すべきでしょうか?

WBOY
WBOYオリジナル
2016-06-23 13:54:17940ブラウズ

$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 ($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->field('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<$fieldCount-1){						echo $fieldValue."\t";					}else {						echo $fieldValue."\n";					}					$j++;				}				$i++;			}		}		exit();	}

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

もう一度モデレータをお願いします。この結果がなぜそうなるのか教えてください

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 は、1 つのグリッドを水平に横切ることを表します。n は、次の行にジャンプすることを意味します。独自の要件に従って、対応する出力フェーズを追加できます。これは、ループ内のフェーズに対応する必要があります
//Field
$letterArr=explode( ',',strtoupper('a,b'));
$arr=array(
array('en'=>'d_name','cn'=>'店舗名'),
array('en '=>'tjs','cn'=>' 受信回数'),
); $chengItem=array('piaomianjia','shuifei','yingshojine','yingfupiamianjia','yingfushuifei' ,'yingFujine','dailishour','fandian','jichangjianshefei', 'ranyoufei');
$fieldCount=count($arr)
//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']) と 'islottery'==1 GROUP BY dname ORDER BY tjs DESC');
if ($sns){
if ($sns[0]['token']!=$this->token) {
exit('許可なし');
}
foreach ($sns as $sn){
$j=0;
foreach ($arr as $field){
$fieldValue=$sn[$field[' ']];
スイッチ ($field['en']){
デフォルト:
ケース 'tjs':
$fieldValue=iconv('utf-8','gb2312',$fieldValue); ;
case 'd_name':
$fieldValue=iconv('utf-8 ','gb2312',$fieldValue);
if ($j<$fieldCount-1){
echo $fieldValue." t";
}else {
echo $fieldValue."n";
}
$j++;
}
$i++;
}
}
exit();
}


}

書き方は次のようにする必要があります。 thinkphpですよね?
私の知る限り、tp はこれをサポートしていませんが、ネイティブ SQL を書くことはできます。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。