【问题标题】:Error Doctrine Query when Using Group By使用 Group By 时的错误准则查询
【发布时间】:2013-01-09 09:23:25
【问题描述】:

我正在使用 Symfony Project 1.4 和 Postgresql

我在教义中使用了错误查询

$q = Doctrine_Query::create()
 ->select("count(sex) as total, sex")
 ->from('Biodata')
 ->groupBy('sex')           
 ->execute();

调试时总是出现这样的显示错误:

SQLSTATE[42803]: Grouping error: 7 ERROR: column "e.id" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: SELECT e.id AS e__id, e.sex AS e__sex, COUNT(e.sex) AS e__0 ...
^. Failing Query: "SELECT e.id AS e__id, e.sex AS e__sex, COUNT(e.sex) AS e__0 FROM biodata e GROUP BY e.sex"

如何修复它并隐藏 e.id 列,这是错误还是需要技巧?

异常结果:

【问题讨论】:

    标签: php postgresql doctrine symfony-1.4


    【解决方案1】:

    Doctrine 自动将主键添加到选择列表中。我们在使用 MSSQL 时遇到了同样的错误。

    尝试添加不水合结果:

    $q = Doctrine_Query::create()
     ->setHydrationMode(Doctrine_Core::HYDRATE_NONE)
     ->select("count(sex) as total, sex")
     ->from('Biodata')
     ->groupBy('sex')
     ->execute();
    

    你不会有列名,但我认为是这样的:

    +========+=========+
    |   0    |    1    |
    +========+=========+
    |  183   |    1    |
    +--------+---------+
    |   54   |    2    |
    +========+=========+
    

    【讨论】:

    • 是的,但是结果很糟糕,我需要这样的结果![在此处输入图像描述][1] [1]:i.stack.imgur.com/zsABU.png
    • 好的,谢谢,它有效,我使用 --- Doctrine_Manager::getInstance()->getCurrentConnection()->fetchAssoc("select count(sex) as total, sex from biodata group by sex "); --- 更简单
    • 这是另一种解决方案,在 Doctrine 方面较少;-) 如果我的回答对您有帮助,您可以 accept it 并投票赞成,如果您觉得如此。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-02
    • 2019-09-12
    • 1970-01-01
    • 2013-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多