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

MySQL अमान्य क्वेरी:चयन के लिए बहुत उच्च स्तर का नेस्टिंग

से संबंधित हो सकता है -नेस्टेड सबक्वेरी ।

बग लॉग इंगित करता है कि इसे MySQL 5.0.72, 5.1.30, और 6.0.7 के विरुद्ध सत्यापित किया गया था।
MySQL 5.1.37, MySQL 5.4.2 (जो 5.5.something बन गया), और NDB 7.1.0 में फिक्स्ड ।

उपरोक्त प्रश्न में आपकी पुन:डिज़ाइन की गई क्वेरी के संबंध में:

पिवट प्रश्न मुश्किल हो सकते हैं। आप एंड्रयू द्वारा सुझाई गई विधि का उपयोग उसके उत्तर में कर सकते हैं। . यदि आप कई UPC मानों की खोज करते हैं, तो आपको SQL क्वेरी बनाने के लिए एप्लिकेशन कोड लिखना होगा, जितने UPC मान आप खोज रहे हैं उतने JOIN क्लॉज़ जोड़कर।

MySQL में शामिल होने की संख्या पर एक सीमा है जो एक ही क्वेरी में की जा सकती है, लेकिन उदाहरण आपको सीमा तक नहीं पहुंचना चाहिए। यानी, आप जो क्वेरी दिखाते हैं वह काम करती है।

मुझे लगता है कि आप चार यूपीसी कोड की खोज करने वाली एक उदाहरण क्वेरी दिखा रहे हैं, जबकि आपका ऐप अधिक संख्या में यूपीसी कोड के लिए गतिशील रूप से क्वेरी बना सकता है, और यह कभी-कभी 61 से अधिक हो सकता है।

ऐसा लगता है कि आपकी क्वेरी का लक्ष्य उन स्टोर को वापस करना है, जिनमें कम से कम एक सूचीबद्ध UPC कोड है। आप इसे और सरलता से निम्नलिखित क्वेरी में कर सकते हैं:

SELECT DISTINCT s.*
FROM allStores AS s
JOIN storeCheckRecords AS cr
  ON s.e_address = cr.e_address
     AND cr.upc IN ('650637119004','650637119011','650637374007','650637374014');

आप इस पद्धति का अन्य तरीकों से उपयोग कर सकते हैं, उदाहरण के लिए उन स्टोरों को खोजने के लिए जिनमें यूपीसी के सभी चार हैं:

SELECT s.*
FROM allStores AS s
JOIN storeCheckRecords AS cr
  ON s.e_address = cr.e_address
     AND cr.upc IN ('650637119004','650637119011','650637374007','650637374014');
GROUP BY s.e_address
HAVING COUNT(DISTINCT upc) = 4;

या ऐसे स्टोर ढूंढने के लिए जिनमें यूपीसी के सभी चार नहीं बल्कि कुछ हैं:

SELECT s.*
FROM allStores AS s
JOIN storeCheckRecords AS cr
  ON s.e_address = cr.e_address
     AND cr.upc IN ('650637119004','650637119011','650637374007','650637374014');
GROUP BY s.e_address
HAVING COUNT(DISTINCT upc) < 4;

या उन स्टोरों को खोजने के लिए जिनमें यूपीसी के चारों की कमी है:

SELECT s.*
FROM allStores AS s
JOIN storeCheckRecords AS cr
  ON s.e_address = cr.e_address
     AND cr.upc IN ('650637119004','650637119011','650637374007','650637374014');
WHERE cr.e_address IS NULL;

इस क्वेरी को बनाने के लिए आपको अभी भी कुछ कोड लिखना है, लेकिन यह करना थोड़ा आसान है, और यह आपके द्वारा चलाए जा सकने वाले जॉइन या सबक्वेरी की संख्या की किसी सीमा से अधिक नहीं है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MYSQL में LIKE और =के बीच अंतर?

  2. MySQL - प्रत्येक क्वेरी को कैसे ट्रैक करें?

  3. mysql में पिछले एक सप्ताह के रिकॉर्ड का चयन करें

  4. एक प्रश्न के साथ mysql तालिका से पंक्तियों के साथ HTML तालिका बनाएं?

  5. मैसकल - केस सेंसिटिव सर्च कैसे करें?