• cakephp , the subquery


    Cakephp 框架帮我们做了很多的工作,的确省了我们很多工作,提高了效率。

    但是,碰到一些比较复杂的查询时,还是有些问题,官方的cookbook api 有说明一些详细的用法,但感觉还是不太够,有些地方讲的不够清楚。

    StackOverflow上的这个问题不错

    http://stackoverflow.com/questions/5770032/cakephp-and-subquery

    The Question:

    How can I write SQL subquery using cake syntax. I know how to code simple query, but I can't handle subquery.

    This is the original query:

    SELECT Assumption.id, Referee.id, Referee.first_name, Referee.second_name
    FROM referees AS Referee
    INNER JOIN (
    
        SELECT a.id, a.referee_id
        FROM assumptions a
        WHERE a.season_id =7
    ) AS Assumption ON Referee.id = Assumption.referee_id
    

    The answer

    Since you didn't understand the syntax, this is the actual query:

    $records = $this->Referee->find('all', array(
                    'fields' => array(
                        'Assumption.id', 'Referee.id', 'Referee.first_name', 'Referee.second_name'
                        ),
                    'joins' => array(
                        array(
                            'table' => 'assumptions',
                            'alias' => 'Assumption',
                            'type'  => 'INNER',
                            'foreignKey'    => false,
                            'conditions'    => array('Referee.id = Assumption.referee_id', 'Assumption.season_id = 7'),
                            ),
                    ),
                )
            );
    

      Which produces this query:

    SELECT 
        `Assumption`.`id`,
        `Referee`.`id`,
        `Referee`.`first_name`,
        `Referee`.`second_name`
    FROM `referees` AS `Referee`
    INNER JOIN assumptions AS `Assumption`
        ON (`Referee`.`id` = `Assumption`.`referee_id` 
            AND `Assumption`.`season_id` = 7)
    

      

    Which provide the results you are looking for.

    Sample output:

    Array
    (
        [0] => Array
            (
                [Assumption] => Array
                    (
                        [id] => 1
                        [0] => Array
                            (
                                [id] => 1
                                [season_id] => 7
                                [referee_id] => 1
                                [name] => SomeAssumpton
                            )
    
                    )
    
                [Referee] => Array
                    (
                        [id] => 1
                        [first_name] => Ref
                        [second_name] => one
                    )
    
            )
    
    )
    

      a

  • 相关阅读:
    IIS7开启目录浏览功能
    IIS7文件无法下载问题处理
    Dubbo端口占用错误信息
    PlSqlDev中执行INSERT SQL语句包含&符号导致数据异常
    VMWare版本兼容问题处理
    手动释放Linux内存
    ORA-00972_标识符过长
    通过API获取统计信息时报Access denied错误处理记录
    微信小程序中跳转另一个小程序
    css怎样去掉多个Img标签之间的间隙
  • 原文地址:https://www.cnblogs.com/oxspirt/p/4528652.html
Copyright © 2020-2023  润新知