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

Yii2 में स्थिति के साथ उप-क्वेरी चुनें () / QueryBuilder

SQL परिप्रेक्ष्य से उदाहरण क्वेरी, चुनिंदा खंड के अंदर "सहसंबद्ध सबक्वेरी" का उपयोग कर रही है और अक्सर यह क्वेरी बनाने का एक बहुत ही अक्षम तरीका है।

SELECT ParentTable.*, (SELECT MAX(ChildTable.NumberField) 
                       FROM ChildTable
                       WHERE ChildTable.FK_Id = ParentTable.Id)
FROM ParentTable

हालांकि यह पहली नज़र में अधिक जटिल और इसलिए कम कुशल प्रतीत हो सकता है, प्रदर्शन के लिए आम तौर पर एक चुनिंदा खंड में "सहसंबद्ध उपश्रेणियों" से बचने के लिए बेहतर होता है और इसके बजाय "व्युत्पन्न तालिका" का उपयोग करके प्रतिस्थापित किया जाता है:

SELECT ParentTable.*,c.MxNum
FROM ParentTable
LEFT JOIN (
           SELECT ChildTable.FK_Id, MAX(ChildTable.NumberField) as MxNum FROM ChildTable
           GROUP BY ChildTable.FK_Id
           ) AS c ON c.FK_Id = ParentTable.Id

ध्यान दें, एक चयनित खंड के साथ एक सहसंबद्ध उपश्रेणी NULL लौटा सकती है, और इसके कारण, यदि उन्हें एक व्युत्पन्न तालिका के साथ प्रतिस्थापित किया जाता है, तो समतुल्य जुड़ाव प्रकार एक LEFT OUTER JOIN (या बस LEFT JOIN) होता है क्योंकि यह एक NULL परिणाम की भी अनुमति देता है। हालांकि यदि आपको कॉलम के लिए NULLs की आवश्यकता नहीं है, तो इसके बजाय अधिक कुशल INNER JOIN का उपयोग करें।

Yii2 सिंटैक्स को नहीं जानने के लिए अग्रिम क्षमायाचना, लेकिन एक प्रभावी वैकल्पिक दृष्टिकोण को जानना प्रासंगिक लगता है जो समस्या को हल करने में सहायता कर सकता है।



  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. सशर्त रूप से PHP कोड चलाएँ

  3. मैं अपने MySQL डीबी में सभी तालिकाओं में उपसर्ग कैसे बदल सकता हूं?

  4. MySQL डेटाबेस को दूसरे सर्वर पर कैसे रिपीट करें

  5. पाइथन में MySQLdb का उपयोग करके MySQL के साथ डालने के बाद आप सुरक्षित रूप से और कुशलता से पंक्ति आईडी कैसे प्राप्त करते हैं?