मान लें कि मेरे पास शॉपिंग साइट के डेटाबेस में Product
तालिका है, जो स्टोर के उत्पादों का विवरण, मूल्य इत्यादि रखने के लिए है। मेरे क्लाइंट को इन उत्पादों को फिर से ऑर्डर करने में सक्षम करने का सबसे प्रभावी तरीका क्या है?डेटाबेस तालिका में सॉर्ट ऑर्डर कॉलम का उपयोग
मैं रिकॉर्ड्स को सॉर्ट करने के लिए उपयोग करने के लिए Order
कॉलम (पूर्णांक) बनाता हूं, लेकिन मुझे वास्तव में बदलने की आवश्यकता के बाद प्रत्येक रिकॉर्ड के क्रम को बदलने के लिए उपयोग की जाने वाली आदिम विधियों के कारण प्रदर्शन के संबंध में कुछ सिरदर्द देता है। एक उदाहरण:
Id Order
5 3
8 1
26 2
32 5
120 4
अब मैं क्या करने के लिए 3 ID=26
साथ रिकॉर्ड का क्रम बदलने के कर सकते हैं?
मैंने जो किया वह एक प्रक्रिया तैयार कर रहा था जो जांचता है कि लक्ष्य आदेश (3) में कोई रिकॉर्ड है या नहीं, तो पंक्ति के क्रम (आईडी = 26) को अद्यतन करता है। यदि लक्ष्य आदेश में कोई रिकॉर्ड है तो प्रक्रिया पैरामीटर के रूप में target order + 1
के साथ उस पंक्ति की आईडी भेजकर स्वयं निष्पादित करती है।
एक मैं जगह बनाने के लिए परिवर्तित करना चाहते हैं के बाद हर एक रिकॉर्ड को अपडेट करने का कारण बनता है कि:
Id Order
5 4
8 1
26 3
32 6
120 5
तो क्या एक होशियार व्यक्ति करना होगा?
- मैं SQL Server 2008 R2 का उपयोग करता हूं।
संपादित करें:
मैं एक आइटम के आदेश स्तंभ की जरूरत है कोई द्वितीयक शामिल कुंजी के साथ छँटाई के लिए पर्याप्त होना चाहिए। ऑर्डर कॉलम को अपने रिकॉर्ड के लिए एक अनूठी जगह निर्दिष्ट करनी होगी।
सभी के अलावा, मुझे आश्चर्य है कि क्या मैं किसी लिंक किए गए सूची की तरह कुछ कार्यान्वित कर सकता हूं: अगली आइटम आईडी रखने के लिए 'ऑर्डर' कॉलम के बजाय 'अगला' कॉलम। लेकिन मुझे नहीं पता कि क्वेरी को कैसे लिखना है जो सही क्रम के साथ रिकॉर्ड पुनर्प्राप्त करता है। अगर किसी को भी इस दृष्टिकोण के बारे में कोई जानकारी है, तो कृपया साझा करें।
एक अधिक अनुभवी व्यक्ति एक स्तंभ 'Order' फोन नहीं होता है कि पहले से ही एसक्यूएल में एक आरक्षित कीवर्ड है, क्योंकि .... :-) –