【问题标题】:Convert SQL query to Doctrine 1.2 dql将 SQL 查询转换为 Doctrine 1.2 dql
【发布时间】:2015-04-02 11:10:59
【问题描述】:

我在 Mysql 表中有一个选择查询来获取特定列(日期)中具有重复值的相关表。如果列中有重复值,这将成功显示列及其外键。例如两行相同的值日期列中的 (2014-11-10)

mysql>select man_id,date_created,count(date_created) as count
from collections
group by man_id,date_created
having count(date_created) > 1;

由于我使用 symfony 1.4 作为框架,因此我希望此查询转换为 Doctrine 查询

 public function getDuplicateDatePayment() {
    $q = $this->createQuery()
              ->select('man_id','date_created','count(date_created) as count')
              ->from('Collections')
              ->groupBy('man_id','date_created')
              ->having('COUNT(c.date_created) > 1');
        return $q->execute();
}

SELECT c.id AS c__id, c.man_id AS c__man_id FROM collections c GROUP BY c.man_id HAVING count(c.date_created) > 1 //result 1 row

为什么教条查询没有按预期显示结果?如何转换所述教条查询,使其显示类似于 SQL 的结果?

//结果1141行

更新

Collections 表与 Man 表以一对多关系相关。我必须为此使用 innerJoin 吗?

【问题讨论】:

  • “为什么学说查询没有按预期显示结果”---他们有不同的GROUP BY,这就是为什么
  • 他们还是不同的

标签: mysql symfony1 doctrine-1.2


【解决方案1】:

经过两天的尝试,寻找答案,我终于找到了解决问题的方法。

SELECT c.id AS c__id, c.man_id AS c__man_id FROM collections c GROUP BY c.man_id HAVING count(c.date_created) > 1 

上述sql结果的问题是,它在groupBy子句中不包含'c.loan_id',即使我将它包含在groupBy子句中。解决方案是,只需添加一个单独的addGroupBy子句..现在它工作。干杯。

public function getDuplicateDatePayment() {
$q = $this->createQuery()
          ->select('c.man_id','c.date_created','count(c.date_created) as count')
          ->from('Collections')
          ->groupBy('c.man_id')
          ->addGroupBy('c.date_created')
          ->having('count(c.date_created) > 1');
    return $q->execute();

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    相关资源
    最近更新 更多