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

फायरबर्ड से MySQL क्वेरी माइग्रेशन - इनर जॉइन सबक्वेरी का चयन करें

समस्या यह है कि mySQL में अल्पविराम ऑपरेटर की प्राथमिकता कम होती है join . की तुलना में ऑपरेटर, इसलिए part.id पर product inner join (subquery) on part.id = highestcost.partid inner join (subquery) on part.id = lowestcost.partid जॉइन का मूल्यांकन पहले . किया जाता है part तालिका अभिव्यक्ति में शामिल हो गई है, इसलिए त्रुटि संदेश।

अल्पविराम ऑपरेटरों को साधारण join . से बदलें ऑपरेटरों और शामिल होने की शर्तों को where . से स्थानांतरित करें on . का खंड खंड और सब ठीक हो जाएगा:

...
FROM   vendor
       inner join vendorparts on vendor.id = vendorparts.vendorid
       inner join part on vendorparts.partid = part.id
       inner join product on product.partid = part.id
       INNER JOIN (SELECT vendorparts.partid,
                          Max(vendorparts.lastcost) AS Highestcost
                   FROM   vendorparts
                   GROUP  BY vendorparts.partid) AS highestcost
               ON part.id = highestcost.partid
       INNER JOIN (SELECT vendorparts.partid,
                          Min(vendorparts.lastcost) AS Lowestcost
                   FROM   vendorparts
                   GROUP  BY vendorparts.partid) AS lowestcost
               ON part.id = lowestcost.partid
WHERE  vendorparts.lastcost <> 0 

यदि आपके पास ऐसे और प्रश्न हैं जहां आप अल्पविराम ऑपरेटर और स्पष्ट जोड़ मिलाते हैं, तो आपको उन्हें देखना चाहिए क्योंकि MySQL में सिंटैक्स त्रुटि न होने पर भी वे अलग-अलग परिणाम उत्पन्न कर सकते हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP strstr या LIKE . पर आधारित SQL कमांड

  2. MySQL - संग्रहीत कार्यविधि अप्रत्याशित मान लौटाती है

  3. एक अलग वर्ग में MySQL डेटाबेस विन्यास

  4. MYSQL डीबी से सरणी में आईडी खोज रहा है

  5. एकाधिक और कथनों के साथ MySQL क्वेरी एक को अनदेखा करती प्रतीत होती है