zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    相关术语随笔
    JDK简介和mac下安装和查看版本命令
    英语
    英语学习2
    英语学习-19.1
    为什么java是只有值传递而没有引用传递
    线程
    关于同步异步

    jdk动态代理实现原理总结
  • 原文地址:https://www.cnblogs.com/oxspirt/p/4528652.html
Copyright © 2011-2022 走看看