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

doctrine2DBALでサブクエリに参加する

    このDQLの例を適用して解決策を見つけました DBALに。秘訣は、サブクエリの生のSQLを取得し、角かっこで囲んで結合することです。サブクエリで使用されるパラメータは、メインクエリで設定する必要があります:

    $subSelect = $connection->createQueryBuilder()
        ->select(array('userSurveyID', 'MIN(timestamp) timestamp'))
        ->from('user_survey_status_entries')
        // Instead of setting the parameter in the main query below, it could be quoted here:
        // ->where('status = ' . $connection->quote(UserSurveyStatus::ACCESSED))
        ->where('status = :status')
        ->groupBy('userSurveyID');
    
    $select = $connection->createQueryBuilder()
        ->select($selectColNames)
        ->from('user_surveys', 'us')
        // Get raw subquery SQL and wrap in brackets.
        ->leftJoin('us', sprintf('(%s)', $subSelect->getSQL()), 'firstAccess', 'us.userSurveyID = firstAccess.userSurveyID')
        // Parameter used in subquery must be set in main query.
        ->setParameter('status', UserSurveyStatus::ACCESSED)
        ->where('us.surveyID = :surveyID')->setParameter('surveyID', $surveyID);
    


    1. MAX(DATE)を使用したGROUP BY

    2. Oracle Fusion Middleware / WebLogicServer11gのインストール

    3. MySQLは、列名が上部にあるCSVテキストファイルにダンプしますか?

    4. Oracleデータベースでパラメータを使用してPL/SQLストアドプロシージャを作成する方法