2011-05-12 5 views
5

द्वारा ऑर्डर करना कहें कि मेरे पास संबंधित रंगों के साथ फूलों की एक तालिका है। क्या फूलों की एक सूची प्राप्त करना संभव है, उन्हें कहें, Yellow पहले, फिर Blue, फिर Red। असल में, मैं मूल्यों की एक सूची निर्दिष्ट करना चाहता हूं और परिणामों को उन मानों से आदेश देना चाहता हूं। मुमकिन? एएनएसआई मामला बयान ..orMySQL - कुछ एएससी या डीईएससी

ORDER BY FIND_IN_SET(column, 'Yellow,Blue,Red') 

:

उत्तर

9

आप FIND_IN_SET इस्तेमाल कर सकते हैं

ORDER BY CASE column 
      WHEN 'Yellow' THEN 1 
      WHEN 'Blue' THEN 2 
      WHEN 'Red' THEN 3 
     END 
2

आप sort_order के लिए रंग तालिका में एक क्षेत्र को जोड़ने और कर सकते हैं और मान प्रदान तरह आवश्यकता के अनुसार । क्वेरी में आप ORDER BY sort_order ASC

मैं उम्मीद कर रहा हूं कि आप इसे गतिशील आवश्यकता के अनुसार आदेश देना चाहते हैं जो स्पष्ट रूप से इन तीन रंगों के लिए स्पष्ट रूप से नहीं है। यह आपको सॉर्ट ऑर्डर प्रबंधित करने के लिए पूर्ण लचीलापन की अनुमति देगा।

+0

कॉलम जोड़ने से समस्या को हल करने में समस्या होती है जब कभी-कभी मुझे ऑर्डर करने की आवश्यकता होती है (पीला, नीला, लाल), कभी-कभी (नीला, पीला, लाल), कभी-कभी (लाल, पीला, नीला), .... – StackOverflowNewbie

+8

THe ' sort_order 'फ़ील्ड को उस पदानुक्रम को स्टोर करना चाहिए जिस पर आपको सॉर्ट करने की आवश्यकता है। उदाहरण के लिए। जब आप सॉर्ट करना चाहते हैं तो रंग और 'sort_order' का मान निम्नानुसार होना चाहिए (ब्लू, पीला, लाल), ब्लू - 1 पीला - 2 लाल - 3 जब आप सॉर्ट करना चाहते हैं (लाल, पीला, नीला) नीला - 3 पीला - 2 लाल - 1 यह आपको php कोड संपादित किए बिना सॉर्ट ऑर्डर को संशोधित करने में मदद करेगा। एक उच्च अंत में, आप एक पृष्ठ में सॉर्ट ऑर्डर प्रबंधित करने के लिए एक वेब प्रावधान प्रदान करते हैं ताकि जब भी उपयोगकर्ता/व्यवस्थापक आदेश बदलना चाहे। इस तरह यह उच्च अंत वेब साइटों पर संभाला जाता है। –

2

मेरी पसंद FIELD(str, str1, str2, ...) फ़ंक्शन का उपयोग कर रही है।

str1, str2, str3, ... सूची में str में इंडेक्स (स्थिति) देता है। स्ट्र 0 नहीं मिला है तो 0 देता है।

तो आप परिणामों की अपनी सूची ऑर्डर करने के लिए दिया गया मान इस्तेमाल कर सकते हैं:

ORDER BY FIELD (color, 'Yellow', 'Blue', 'Red') 

आप क्रम को उलट चाहते हैं, बस DESC जोड़ें।