gpt4 book ai didi

php - cakephp 分组依据,每组有 n 个结果

转载 作者:行者123 更新时间:2023-11-29 20:28:20 25 4
gpt4 key购买 nike

我需要使用 cakephp 从数据库中的每个类别中提取 3 个结果,我尝试使用 mysql session 变量和条件在数据库中进行查询,如下所示

    SELECT *, @question_cat_rank := 0, @question_cat_country:=''
FROM
(SELECT *,
@question_cat_rank := IF(@question_cat_country = question_setname.question_cat, @question_cat_rank + 1, 1) AS question_cat_rank,
@question_cat_country := question_cat
FROM question_setname
ORDER BY question_cat desc
) ranked
WHERE question_cat_rank <= 3

它在 mysql 查询分析器中工作正常,但是当我使用 cakephp 查询时,它返回表中的所有结果,而不是 3 个结果

我尝试使用 cakephp 方式创建它,如下所示

public $virtualFields = array(
'@catvirt' => 1,
'@catvirt2' => 'question_cat',
'incrmt' => 'IF(@catvirt2 = question_cat, @catvirt+1, 1)',
);
function getquestionGroup(){

$result1 = $this->find('all', array(
'fields' => array('question_cat', '@catvirt2', 'incrmt'),
'@catvirt2'=> 'question_cat',
'@catvirt' => '@catvirt'
)
);

$result = $this->find('all', array($result1,
'conditions' => array('@catvirt <=' => 3),
)
);

我尝试执行准备好的语句和存储过程,但仍然没有成功返回所有结果

任何帮助将不胜感激

最佳答案

我会这样编写查询:

 SELECT x.* 
FROM
( SELECT *
, @question_cat_rank := IF(@question_cat_country = question_cat, @question_cat_rank + 1, 1) question_cat_rank
, @question_cat_country := question_cat
FROM question_setname
, (SELECT @question_cat_rank := 0, @question_cat_country:='') vars
ORDER
BY question_cat DESC
) x
WHERE question_cat_rank <= 3;

关于php - cakephp 分组依据,每组有 n 个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39179089/

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