如何在CakePHP中编写带子查询的Select

时间:2014-05-23 08:55:38

标签: php mysql sql postgresql cakephp

我有以下查询:

$queryResult = $this->Hit->query(
    "select P, count(S) as S
    from 
    (
        select pattern_id as P, srn as S from hits 
        where job_id=".$id." and srn != ''
        group by srn, pattern_id 
        order by pattern_id, srn
    ) as T 
        group by P
        order by P;"
);

所以基本上我有一个select .. from (select .. ) ...声明。 我在使用MySQL时工作得很好。但我必须将数据库迁移到PostgreSQL,所以我想将其更改为Cake-way。所以我的问题是,如何在 CakePHP 中解释这种类型的查询(select from select)?

提前致谢。

1 个答案:

答案 0 :(得分:3)

我不确定你在CakePHP中解释这个查询是什么意思,因为你的代码是有效的CakePHP。

话虽如此,我会将您的查询重写为:

SELECT pattern_id as P, COUNT(DISTINCT srn) as S
FROM hits
WHERE job_id=".$id." and srn != ''
GROUP BY pattern_id
ORDER BY pattern_id;

(我相信这是等效的 - 你可以加载sqlfiddle.com以获取更好的测试样本数据)

如果这样做并且你有一个Hits模型,那么你可以使用find方法重新编写查询。