Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

सिद्धांत 2 डीबीएएल के साथ सबक्वायरी में शामिल हों

मैंने इस DQL उदाहरण<को अपनाकर एक समाधान ढूंढा है। /ए> डीबीएएल को। चाल सबक्वायरी के कच्चे एसक्यूएल को प्राप्त करने, इसे ब्रैकेट में लपेटने और इसमें शामिल होने के लिए है। सबक्वेरी में प्रयुक्त पैरामीटर्स को मुख्य क्वेरी में सेट किया जाना चाहिए:

$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. मैं पर्ल के डीबीआई का उपयोग करके एसक्यूएल इंजेक्शन हमलों के खिलाफ कैसे रक्षा कर सकता हूं?

  2. mysql संग्रहीत कार्यविधि मानक क्वेरी से 20 गुना धीमी है

  3. संक्षिप्त संख्या के लिए प्रारूप संख्या

  4. mysql डेटाबेस में 3 महीने से अधिक पुरानी पंक्तियों को हटाने का कार्य

  5. मैं विंडोज़ के लिए एक्सएएमपीपी के साथ MySQL कमांड लाइन तक कैसे पहुंच सकता हूं?