【问题标题】:Propel and SQL aggregate functionsPropel 和 SQL 聚合函数
【发布时间】:2013-01-24 13:37:31
【问题描述】:

以下 SQL 查询在 Propel (1.4) 中的外观如何?

SELECT SUM(`price_equipment`) FROM `order_equipment` WHERE `order_id` = 57072;

我使用 google 进行了一些研究,但我发现的所有示例都包含在 count GROUP BY 子句中。我只需要一个值。

【问题讨论】:

标签: orm symfony-1.4 propel


【解决方案1】:

在这里添加分组语句不会有什么坏处,因为它有助于汇总您的语句,只需按您的 orderId 分组。如果您不希望分组依据,只需删除该行即可。

$value = OrderEquipmentQuery::create()
          ->withColumn('SUM(price_equipment)')
          ->filterByOrderId(57072)
          ->groupByOrderId()
          ->find()

这就是你在 1.6 中的做法,对于 1.4,我会查看 j0k 给出的示例,但请记住,在查询中按 orderId 分组可能是安全的

【讨论】:

  • 请注意,这个答案仍然适用于 1.6(不是 OP 指定的 Propel 1.4),但实际上,@biera,您应该考虑升级到 1.6 - 它明显更好。
【解决方案2】:

我认为 Propel 1.4 的语法类似于:

$c = new Criteria();
$c->add(OrderEquipmentPeer::ORDER_ID, $orderId);
TestPeer::addSelectColumns($c);
$c->addAsColumn('price_sum', 'SUM('.OrderEquipmentPeer::PRICE_EQUIPMENT.')');
$results = OrderEquipmentPeer::doSelectStmt($c);

从 1.4 开始很难找到文档,因为他们已经杀死了 propelorm.org 上的旧 wiki,但我认为这是正确的。正如我在其他评论中所说,您应该考虑升级到 Propel 1.6,因为它具有更多功能和更好的稳定性。据我所知,1.4 分支根本没有维护。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-14
    • 2011-09-27
    • 2010-09-08
    • 1970-01-01
    相关资源
    最近更新 更多