我想在Yii 2中实现以下SQL查询,但没有成功。这应给予唯一公司名称的总数:
SELECT count(DISTINCT(company_name)) FROM clients
这应该会显示company_name与client code和id(PK):
company_name
client code
id(PK)
SELECT (DISTINCT(company_name,client_code)) FROM clients
如何做到这一点?
lg40wkob1#
试试这个:
$total = YourModel::find()->select('company_name')->distinct()->count();
在搜索模型中:
public function search($params) { $query = YourModel::find()->select('company_name')->distinct(); // or $query = YourModel::find()->select(['company_name', 'client_code'])->distinct(); $query->orderBy('id desc'); $dataProvider = new ActiveDataProvider([ 'query' => $query, ]); // ... }
wlp8pajw2#
回答我自己的问题,我得到了以下工作解决方案:
已取得唯一company_name的计数:
$my = (new yii\db\Query()) ->select(['company_name',]) ->from('create_client') ->distinct() ->count(); echo $my;
不同company_name和client_code的列表:
client_code
$query = new yii\db\Query(); $data = $query->select(['company_name','client_code']) ->from('create_client') ->distinct() ->all(); if ($data) { foreach ($data as $row) { echo 'company_name: ' . $row['company_name'] . ' client_code: ' . $row['client_code'] . '<br>'; } }
b09cbbtk3#
一切正常
return Clients::find()->count('DISTINCT(company_name)');
eufgjt7s4#
我希望这个样品对你有用
$names = Yii::$app->db->createCommand('SELECT count(DISTINCT(company_name)) as name FROM clients') ->queryAll();
用于访问数据
foreach ($names as $name){ echo $name['name']; }
cwxwcias5#
对于那些需要在具有别名的列和其他列上选择不同的列的用户,可以使用以下解决方案:
$modelClass::find() ->select(new Expression( "distinct on ('col1') col1, col2, test as col3, 'hardCodeValue' as col4" ))
注意:对于PGSQL,在查询中使用什么引号很重要。
5条答案
按热度按时间lg40wkob1#
试试这个:
在搜索模型中:
wlp8pajw2#
回答我自己的问题,我得到了以下工作解决方案:
已取得唯一
company_name
的计数:不同
company_name
和client_code
的列表:b09cbbtk3#
一切正常
eufgjt7s4#
我希望这个样品对你有用
用于访问数据
cwxwcias5#
对于那些需要在具有别名的列和其他列上选择不同的列的用户,可以使用以下解决方案:
注意:对于PGSQL,在查询中使用什么引号很重要。