कल्पना कीजिए कि मेरे पास एक तालिका है जिसमें एक पुस्तक के सभी अध्याय और प्रत्येक अध्याय से प्रारंभ/समाप्ति पृष्ठ शामिल है।इंडेक्स का लाभ उठाने के दौरान मैं दो कॉलम के बीच कैसे क्वेरी कर सकता हूं?
chapter | start_page | end_page
--------------------------------------
1 | 1 | 24
2 | 25 | 67
3 | 68 | 123
4 | 124 | 244
5 | 245 | 323
मैं यह जानने का प्रयास कर रहा हूं कि एक यादृच्छिक पृष्ठ किस अध्याय पर पड़ता है, उदाहरण के लिए पेज 215 कहें।
मेरा पहला विचार मेरी मेज के बड़े आकार के कारण इस
SELECT `chapter`
FROM `book`
WHERE `start_page` <= 215
AND `end_page` >= 215
की तरह एक प्रश्न उपयोग करने के लिए दुर्भाग्य से MySQL ऊपर क्वेरी जो एक बड़ी समस्या यह है में इंडेक्सों का लाभ नहीं उठा पा रहा था।
कुछ शोध करने के बाद मैं इस क्वेरी के साथ आया जो इंडेक्स का लाभ उठाता है।
SELECT `chapter`
FROM `book`
WHERE `start_page` <= 215
ORDER BY `start_page` DESC
LIMIT 1
अब मुद्दा यह है कि मैं इंडेक्स का लाभ उठाते समय कई यादृच्छिक पृष्ठों से पूछताछ करने की क्षमता चाहता हूं। ऐसा लगता है कि मैं अपनी आखिरी क्वेरी को संशोधित नहीं कर सकता क्योंकि यह परिणामों को सीमित करने पर बहुत निर्भर है।
कोई सलाह बहुत सराहना की जाएगी!
अद्यतन: रे टोल से एक टिप्पणी के लिए धन्यवाद, मेरे पास एक प्रश्न है जो मुझे आश्चर्यजनक प्रदर्शन के साथ परिणाम देता है।
SELECT chapter
FROM book
WHERE (start_page = (SELECT max(start_page) FROM book WHERE start_page <= 73) AND end_page >= 73)
OR (start_page = (SELECT max(start_page) FROM book WHERE start_page <= 92) AND end_page >= 92)
OR (start_page = (SELECT max(start_page) FROM book WHERE start_page <= 300) AND end_page >= 300)
क्या यह विचार है कि आप एक प्रश्न में, कई पृष्ठों को सबमिट करने और परिणामस्वरूप प्राप्त करने के लिए, पृष्ठ संख्या वाले एक तालिका को उनके अध्याय के साथ जोड़ा गया है? –
मुझे परिणाम में केवल अध्याय संख्याओं की एक तालिका की आवश्यकता है। मुझे पेज नंबरों के साथ जोड़ा जाने की आवश्यकता नहीं है। – Chip
तो किसी भी तरह से आप 73, 92, 300 जैसे पृष्ठ संख्याओं का एक सेट सबमिट करना चाहते हैं और 3 और 5 वापस प्राप्त करना चाहते हैं, सही? –