Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在CakePHP中编写Select with子查询_Php_Mysql_Sql_Postgresql_Cakephp - Fatal编程技术网

如何在CakePHP中编写Select with子查询

如何在CakePHP中编写Select with子查询,php,mysql,sql,postgresql,cakephp,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,

我有以下疑问:

$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;"
);
所以基本上我有一个选择。。从选择。。。陈述 当我使用MySQL时,它工作得非常好。但我必须将DB迁移到PostgreSQL,所以我想将其改为蛋糕式。所以我的问题是,如何在CakePHP中解释这种类型的查询SELECTFROMSELECT


提前感谢。

我不确定您用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方法重新编写查询

您是否有任何错误或不执行此查询?正如我提到的,它现在正在运行。但是如果有选择的话,我想用“蛋糕”的方式来表达它,因为我将把整个数据库迁移到PostgreSQL,我还没有检查这个MySQL查询在那里是否有效。所以我想用$this->Hit->find这样的东西。。。而不是$this->Hit->query…看看这里的简单子查询面包店:谢谢,我已经查过了。不幸的是,我仍然不知道如何使用子查询作为源表。在这种情况下,我应该在哪个模型上调用find?或者我应该将子查询添加到find方法的“table”参数中吗?通常对于这种形式的查询,您会使用query。我不知道我是否误读了这个查询-你需要那个查询结构吗?它不能写为一个select语句吗?我想用$this->find而不是$this->query来解释它。您编写的查询非常有效,谢谢!如果您为其添加了等效的find调用,那么这将是一个更好的答案。