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

标签 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)?

提前致谢。

最佳答案

我不确定您在 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/

相关文章:

php mysql 按 View 显示

PHP : insert into database with ajax

MySQL:如何查询并排显示两个用户的答案

PHP 和 MySQL 问题

php - 变量变量不起作用

mysql - 在我的数据库中搜索匹配/包含某些整个关键字的记录

php - 为什么我不能使用 PHP 将我的 24 小时制转换为 12 小时制的上午/下午时间?

PHP 数组的平均时间

php - 从选择中获取字符串的某些部分

sql - 通过 Oracle 连接