Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bergabunglah dengan subquery dengan doktrin 2 DBAL

Saya telah menemukan solusi dengan mengadaptasi contoh DQL ke DBAL. Triknya adalah mendapatkan SQL mentah dari subquery, membungkusnya dalam tanda kurung, dan menggabungkannya. Parameter yang digunakan dalam subquery harus disetel di kueri utama:

$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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pelanggaran batasan integritas:1452 Tidak dapat menambah atau memperbarui baris anak:

  2. Cara Menggunakan Peran yang Telah Berubah di MySQL 8.0

  3. Transaksi MySQL:SELECT + INSERT

  4. tampilkan nama bulan alih-alih nomor bulan di mysql

  5. Jari-jari beberapa titik lintang/bujur