यह संभव है कि इस तरह के एक प्रश्न से पहले पूछा गया है, लेकिन मैं खोजने के लिए शर्तों के बारे में नहीं सोच सकता।एसक्यूएल विशेष पंक्ति के आसपास "विंडो" का चयन करना
मैं एक फोटो गैलरी एप्लिकेशन पर काम कर रहा हूं, और वर्तमान तस्वीर के संदर्भ को दिखाते हुए 9 थंबनेल प्रदर्शित करना चाहता हूं (केंद्र में वर्तमान तस्वीर के साथ 3x3 ग्रिड में, जब तक कि वर्तमान तस्वीर पहले में न हो 4 फोटो दिखाए जा रहे हैं, इस मामले में यदि उदाहरण के लिए यदि वर्तमान तस्वीर दूसरी है तो मैं फोटो 1 से 9 का चयन करना चाहता हूं)।
1, 5, 9, 12, 13, 18, 19, 20, 21, 22, 23, 25, 26
तो वर्तमान: उदाहरण के लिए, आईडी के साथ तस्वीरों की सूची से युक्त एक एल्बम दिया तस्वीर 19 है, मैं चाहता हूँ भी देखने के लिए:
9, 12, 13, 18, 19, 20, 21, 22, 23
वर्तमान तस्वीर 5 है, तो मैं भी देखना चाहते:
1, 5, 9, 12, 13, 18, 1 9, 20, 21
मैं की तर्ज पर कुछ के बारे में सोच कर दिया गया है:
SELECT *
FROM photos
WHERE ABS(id - currentphoto) < 5
ORDER BY id ASC
LIMIT 25
लेकिन इस मामले जहां आईडी गैर अनुक्रमिक हैं में काम नहीं करता है (उपरोक्त उदाहरण के रूप में), या जहां मामले के लिए Currentphoto से पहले अपर्याप्त तस्वीरें हैं।
कोई विचार?
धन्यवाद,
Dom
पी.एस. अगर कुछ अस्पष्ट है तो कृपया एक टिप्पणी छोड़ दें, और मैं इस सवाल को स्पष्ट करूंगा। यदि कोई अन्य लोगों को भविष्य में इस प्रश्न को खोजने में मदद करने के लिए एक और उपयोगी शीर्षक के बारे में सोच सकता है, तो कृपया भी टिप्पणी करें।
यह एक अच्छी, उपयोगी तकनीक है। मैंने इसे अतीत में MySQL के साथ उपयोग किया है। सूची के सिरों को संभालने के लिए, जहां आपके पास पर्याप्त पंक्तियां नहीं होंगी: LIMIT 10 का उपयोग करें और प्रक्रियात्मक कोड में चयन करें। – dkretz
धन्यवाद ले dorfier, जो सीमा के साथ मुद्दे हल करता है, मैं सुझाव के रूप में संपादित करेंगे। – Turnkey
मैं कुछ ऐसा ही कर रहा हूं। मैंने यूनियन के परिणामस्वरूप "आईडी एएससी द्वारा ऑर्डर" जोड़ा, इसलिए पंक्तियां इरादे के रूप में वापस आईं। आपको आईडी डीईएससी द्वारा पहली ORDER को बदलने की आवश्यकता होगी, अन्यथा पहले कुछ पंक्तियां हमेशा वापस आ जाएंगी। –