Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tham gia truy vấn con với học thuyết 2 DBAL

Tôi đã tìm ra giải pháp bằng cách điều chỉnh ví dụ DQL này tới DBAL. Bí quyết là lấy SQL thô của truy vấn con, đặt nó trong dấu ngoặc và nối nó. Các tham số được sử dụng trong truy vấn phụ phải được đặt trong truy vấn chính:

$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. Kết quả thứ tự Laravel theo cột trên bảng đa hình

  2. MySQL, tốt hơn để chèn NULL hoặc chuỗi trống?

  3. Làm thế nào để kiểm tra một câu lệnh SQL Update trước khi chạy nó?

  4. Chuyển đổi MySQL thành Doctrine Query Builder. Vấn đề với IF và CONCAT. Hoặc một cách tiếp cận khác cho các truy vấn phụ trên lựa chọn

  5. Các phương pháp hay nhất cho URL có khoảng trắng và các ký tự đặc biệt