sql >> データベース >  >> RDS >> Mysql

CakephpのUNION構文

    あまりにも多くのコーダーが、フレームワークの機能に制限しようとします。しないでください。フレームワークが提供するものを使用します。必要な機能がない場合は、次のいずれかを行います。

    • 必要な機能をクラス拡張にコーディングします

    または

    • ニーズに合わせてフレームワーク内でコードをカスタムスピンします。

    多くの場合、開発者は四角いペグを丸い穴に打ち込もうとし、コードを複雑にするだけの余分な作業をやりすぎてしまいます。一歩下がって、最初にフレームワークを使用している理由を尋ねてください。それは構造化されていない言語に構造化をもたらします。これは、アプリケーションを構築するための強固な再利用可能な基盤を提供します。それはあなた自身を入れて制限するための箱であることを意図していません。

    更新:複雑な検索条件 そしてあなたの答えを見つけました:

    $joins = array(
        array(
            'table' => 'test_twos',
            'alias' => 'TestTwo',
            'type' => 'LEFT',
            'conditions' => array(
                'TestTwo.id = TestOne.id',
            )
        ),
        array(
            'table' => 'test_threes',
            'alias' => 'TestThree',
            'type' => 'LEFT',
            'conditions' => array(
            'TestThree.id = TestOne.id',
        )
        )
    );
    
    $dbo = $this->getDataSource();
    $subQuery = $dbo->buildStatement(
        array(
            'fields' => array('*'),
            'table' => $dbo->fullTableName($this),
            'alias' => 'TestOne',
            'limit' => null,
            'offset' => null,
            'joins' => $joins,
            'conditions' => null,
            'order' => null,
            'group' => null
        ),
        $this->TestOne
    );
    $query = $subQuery;
    
    $query .= ' UNION ';
    $joins = array(
        array(
            'table' => 'test_twos',
            'alias' => 'TestTwo',
            'type' => 'LEFT',
            'conditions' => array(
                'TestTwo.id = TestOne.id',
            )
        ),
        array(
            'table' => 'test_threes',
            'alias' => 'TestThree',
            'type' => 'RIGHT',
            'conditions' => array(
            'TestThree.id = TestOne.id',
            )
        )
    );
    
    $dbo = $this->getDataSource();
    $subQuery = $dbo->buildStatement(
        array(
        'fields' => array('*'),
        'table' => $dbo->fullTableName($this),
        'alias' => 'TestOne',
        'limit' => null,
        'offset' => null,
        'joins' => $joins,
        'conditions' => null,
        'order' => null,
        'group' => null
        ),
        $this->TestOne
    );
    
    $query .= $subQuery;
    
    pr($query);
    


    1. SQLServerの復元モードからデータベースをオンラインにする方法

    2. 不正な整数値:''列エラーの場合

    3. データベース構造変更のためのバージョン管理システムはありますか?

    4. requireステートメントで正しいパスを選択する