我正在创建一个预算应用程序以学习CakePHP 3框架。到目前为止,一切进展顺利,但我仍然坚持这个问题。
目标:在对expenes_categories_id进行分组之后,我想查询最近的记录。
我当前的策略是在GROUP BY之后选择最大ID。
ExpenseCateogry
有很多MonthlyBudgetLimits
这是monthly_budget_limits
表:
这是我的代码:
$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
以下是结果:
错误::我不理解为什么当此限制与category_limit
6相关联时,55.00为什么显示为id
。也许我不了解mySQL组通过查询,但令我感到奇怪的是,为什么返回的limit_amount
与MAX(id)
不对应。
感谢您的帮助。谢谢:)