CakePHP 3.x-使用GROUP BY查询最新数据

时间:2018-08-18 20:47:24

标签: mysql database cakephp cakephp-3.0

我正在创建一个预算应用程序以学习CakePHP 3框架。到目前为止,一切进展顺利,但我仍然坚持这个问题。

目标:在对expenes_categories_id进行分组之后,我想查询最近的记录。

我当前的策略是在GROUP BY之后选择最大ID。

ExpenseCateogry有很多MonthlyBudgetLimits

这是monthly_budget_limits表:

enter image description here

这是我的代码:

    $query = $expenseCategories->find(); 
    $query
        ->leftJoinWith("MonthlyBudgetLimits")
        ->select([
            'category' => 'ExpenseCategories.expense_category',
            'id' => $query->func()->max('MonthlyBudgetLimits.id'), 
            'category_limit' => 'MonthlyBudgetLimits.limit_amount'
        ])
        ->group('ExpenseCategories.id');    

这是代码产生的sql:

    SELECT 
      ExpenseCategories.expense_category AS `category`, 
      (
        MAX(MonthlyBudgetLimits.id)
      ) AS `id`, 
      MonthlyBudgetLimits.limit_amount AS `category_limit` 
    FROM 
      expense_categories ExpenseCategories 
      LEFT JOIN monthly_budget_limits MonthlyBudgetLimits ON ExpenseCategories.id = (
        MonthlyBudgetLimits.expense_category_id
      ) 
    GROUP BY 
      ExpenseCategories.id

以下是结果:

enter image description here

错误::我不理解为什么当此限制与category_limit 6相关联时,55.00为什么显示为id。也许我不了解mySQL组通过查询,但令我感到奇怪的是,为什么返回的limit_amountMAX(id)不对应。

感谢您的帮助。谢谢:)

0 个答案:

没有答案