gpt4 book ai didi

php - Cakephp 3 中带有子查询的 mysql FROM 子句

转载 作者:行者123 更新时间:2023-11-29 11:45:12 24 4
gpt4 key购买 nike

我想在 cakephp 3 中将子查询与主查询一起使用。正如我所见 this link ,这很好理解。但我想在 mysql FROM 子句中使用子查询。即“SELECT * FROM (SELECT * FROM table_name)”。但我对它的语法一无所知。如果有人曾经在 cakephp 3 中尝试过这个,那么答案将不胜感激。以下是一些我尝试过但对我不起作用的代码。

$purchases = TableRegistry::get('Purchases');
$sublastitem = $purchases->find()
->select([
'id',
'customer_id',
'item'
])
->where(function ($exp, $q) use($custids)
{
return $exp->in('customer_id', ['1','2']);
})
->order(['id' => 'DESC']);

上面是我想在 FROM 子句中使用的子查询。

这些代码我已经尝试过(注释行已尝试。其他的都按原样进行尝试)。

// $lastitem = $sublastitem->find();
// $lastitem = $purchases->find($sublastitem);
// $lastitem = $purchases->all($sublastitem);
$lastitem->select([
'id',
]);
$lastitem->group('customer_id');

我找到了一个更清楚地描述我的问题的链接。但是这个链接中的答案对我来说是 Not Acceptable ,因为我想在 GROUP BY 之前执行 ORDER BY 。这是link

这是我在 Cakephp 3 中想要的查询。

SELECT * FROM (SELECT 'id', 'customer_id', 'item' FROM purchases WHERE customer_id IN (1, 2) ORDER BY id) t GROUP BY customer_id

最佳答案

您必须创建两个单独的查询对象。这意味着您必须使用类似于以下的语法:

$matchingUsers = $users->find('all')->select('id');

$matchingPaurchases = $purchases->find('all')->where(['user_id' => $matchingUsers]);

这将创建如下内容:从购买中选择 buy_id、purchase_price、purchase_item_id WHERE user_id IN(1,2,3,4,5)

参见SubQueries在食谱中

关于php - Cakephp 3 中带有子查询的 mysql FROM 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35055438/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com