我有以下查询:
$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
)?
提前致谢。
最佳答案
我不确定您在 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 方法重写查询。
关于php - 如何在 CakePHP 中编写带子查询的 Select,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23824902/