मेरे पास इस तरह एक मेज है: user_id hobbie1 hobbie2 hobbie3
1 स्की सॉकर टीवी 1 स्केटिंग स्लीप 1 स्की स्लीप 1 टी वी पिक्चर फिल्में (...) और मैं उस यूजर_आईड के लिए, उनके पास शीर्ष 10 शौक बनाना चाहता हूं, ऑगुरेन्स नंबर द्वारा ऑर्डर किया है। हां, मुझे पता है कि सामान्यीकरण के मामले में डेटाबेस अजीब लगता है, लेकिन यह वास्तविक चीज़ का एक सरल उदाहरण है :) टेबल में एक ही user_id के साथ कई पंक्तियाँ और उसके शौक वाले 3 कॉलम हैं।
उस में उदाहरण मुझे प्राप्त करने में सक्षम होना चाहिए: हॉबी गिनती टीवी 4 नींद 2 स्की 2 (...)
तो, मैं सोच रहा हूं कि मुझे 1 पंक्ति (1 स्की सॉकर टीवी) को 3 पंक्तियों में बदलने की जरूरत है (1 स्की | 1 सॉकर | 1 टी वी) तो मेरी सामान्य एसक्यूएल गणना, आदि।
मेरा समाधान है:
चुनें hobbie, count (hobbie) से (से) (Hobbie1 शौक़ों के रूप में चयन करें) संघ सभी (शौकिया के रूप में हॉबी के रूप में चयन करें hobbie2) संघ (सभी शौकियों के रूप में hobbie के रूप में चयन करें hobbie3)) b.Hobby आदेश द्वारा बी समूह द्वारा 2 desc सीमा 10 लेकिन यह समस्या को हल करने के लिए उपयुक्त नहीं लगता है और यूनियन का उपयोग करता है। कोई भी बेहतर समाधान?
मुझे यह समस्या पसंद है, लेकिन यदि एक ही प्रश्न में लक्ष्य करना है, मैं आपके पास जितना बेहतर समाधान नहीं सोच सकता
मेरे लिए, यह बॉक्स के बारे में सोचने की मांग करता है:
- डेटा को "सामान्य" करने के लिए असहनीय उत्तर, ठीक है, बेकार है। जाहिर है कि यह कोई विकल्प नहीं है।
- आपको कितनी बार इस डेटा की ज़रूरत है? यह कैसे अप टू डेट होना चाहिए? शायद हर रात आप आवश्यक डेटा को सामान्यीकृत तालिका में निकाल सकते हैं और उस के प्रश्नों को निकाल सकते हैं? यह कुल डेटा के लिए एक सामान्य रणनीति है जो कि गणना करना बहुत मुश्किल है।
Comments
Post a Comment