से संबंधित हो सकता है -नेस्टेड सबक्वेरी ।
बग लॉग इंगित करता है कि इसे 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;
इस क्वेरी को बनाने के लिए आपको अभी भी कुछ कोड लिखना है, लेकिन यह करना थोड़ा आसान है, और यह आपके द्वारा चलाए जा सकने वाले जॉइन या सबक्वेरी की संख्या की किसी सीमा से अधिक नहीं है।