与学说进行左连接后如何计算元素

Posted

技术标签:

【中文标题】与学说进行左连接后如何计算元素【英文标题】:how to count elements after making a left join with doctrine 【发布时间】:2013-09-12 17:00:44 【问题描述】:

我有 2 个表:“用户”和“状态”。我假装做的是计算有多少用户来自某个状态,即:

说明用户总数 圣达菲 5 布宜诺斯艾利斯 20

等等。

我正在将 codeigniter 与教义一起使用,这是我的代码:

public function countByState()
    $this->qb = $this->em->createQueryBuilder();

    $this->qb->select('s.state_id', $this->qb->expr()->count('u.state'))
             ->from('models\States', 's')
             ->leftJoin('s.state_id' , 'u')
             ->leftJoin('models\User', 'u')
             ->groupBy('s.state_id');

    $query = $this->qb->getQuery();
    $obj = $query->getResult();

    return $obj;        

这是错误: 致命错误:未捕获的异常 'Doctrine\ORM\Query\QueryException' 带有消息 '[Semantical Error] line 0, col 76 near 'u LEFT JOIN models\User':错误:类模型\States 在 C 中没有名为 state_id 的关联:\Desarrollo\new_frame_doctrine\site\application\libraries\data\Doctrine\ORM\Query\QueryException.php 在第 47 行

【问题讨论】:

@AmitKumar thanx amit,我知道如何在 sql 中做到这一点,但在 dql 中不知道,所以这就是问题 【参考方案1】:

请使用这个sql查询

SELECT s.name,count(*) FROM `users` u left join `state` s on u.stateid=s.id 
 group by s.id;

在代码中请相应更改!!

我通过创建两个名为 state 的表(带有字段id and name)来尝试这个 和用户(字段为id, name and state_id),对我来说效果很好。

干杯!!!

【讨论】:

以上是关于与学说进行左连接后如何计算元素的主要内容,如果未能解决你的问题,请参考以下文章

教义 2,如何在左连接结果集中获取属性? [关闭]

我在 oracle sql 中的左连接没有返回左表的每个元素

如何在 C# 中进行完全外连接? [复制]

Querydsl:如何按列进行左连接

Clickhouse 数组连接与左连接和计算计数

MySql 左连接几个表后怎么进行统计?count(*)、sum(..)