Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

मैं MySQL के साथ अलग-अलग कॉलम कैसे गिन सकता हूं और समूहबद्ध कर सकता हूं?

मुझे पता है कि आप एक ही समय में कई चीजों से जूझ रहे हैं, लेकिन सबसे अच्छा जवाब उस समस्या को हल करता है जो ikegami जल्दी से पारित हो गया पर्ल में इसे करने के अपने रास्ते पर:

लोग अक्सर एप्लिकेशन स्तर पर आवश्यकता से अधिक करते हैं क्योंकि वे डेटाबेस में सही चीजें करना कभी नहीं सीखते हैं (जैसे कि आपका अन्य प्रश्न जिसे पर्ल के बजाय उपयुक्त SQL क्वेरी द्वारा बेहतर उत्तर दिया गया है)। लेकिन, एक तरफ के रूप में, बहुत से लोग ऐसा इसलिए करते हैं क्योंकि वे स्कीमा को बदलने में असमर्थ हैं। सामाजिक अनुमान, जैसे कि बीयर का उपयुक्त अनुप्रयोग, कभी-कभी उस पथ को सुगम बनाता है। डेटाबेस के लोगों को समझाने का एक छोटा सा काम बाद में गुणकों में भुगतान करता है। और, दूसरी तरफ, "पूर्ण स्टैक डेवलपर" अक्सर डेटाबेस के किसी भी परिष्कृत उपयोग को छोड़ देता है।

मैं किसी को भी सी.जे. तिथि का डेटाबेस इन डेप्थ पढ़ने के लिए प्रेरित नहीं करने जा रहा हूं। , लेकिन स्कीमा को सही करने में बहुत अधिक मूल्य है। ठीक से, मेरा मतलब है कि यह अपने उपयोग पर कम से कम प्रयास और जटिलता लगाता है। चीजें आसान होनी चाहिए, और आपको इन चीजों को एप्लिकेशन स्तर पर पुनर्व्यवस्थित नहीं करना चाहिए।

आप गिनना चाहते हैं कि प्रत्येक उत्तर कितनी बार चुना गया है। काउंटिंग कुछ ऐसा है जो डेटाबेस बहुत अच्छा करते हैं, इसलिए डेटाबेस को इसे करने दें।

आपके कुछ प्रश्न हैं। सवालों के अलग-अलग जवाब हैं। सर्वेक्षण समूह एक साथ प्रश्नों के समूह। लोग अपने उत्तरों को प्रश्नों के साथ जोड़कर सर्वेक्षण का जवाब देते हैं।

यहाँ एक साधारण स्कीमा डिज़ाइन है (और कुछ डेटाबेस आदमी अंततः दिखाई देंगे और मुझे बताएंगे कि मैंने इसे सही नहीं किया, लेकिन यह ठीक है)। चाल यह है कि अप्रयुक्त होने वाले कई कॉलम नहीं हैं। सब कुछ एक साफ छोटे पैकेज ("रिलेशनल डेटाबेस" में "रिलेशन") में आता है जो आसानी से "विदेशी कुंजी" के माध्यम से अन्य चीजों से जुड़ा होता है (उदाहरण के लिए प्रश्न का उत्तर मैप करने के लिए प्रश्न_आईडी)। उत्तर, उदाहरण के लिए, एक ही question_id . के लिए अनेक पंक्तियां होंगी ।

अगर कोई फैंसी मॉडलिंग टूल के साथ आना चाहता है और चित्र बनाना चाहता है, तो इसके लिए जाएं। मैं इसे समुदाय विकि के रूप में चिह्नित कर रहा हूं।

Table: Questions
   id
   text

Table: Answers
   id
   text
   question_id

Table: Surveys
   id 
   title

Table: SurveyQuestionSet
   id
   survey_id
   question_id   

Table: Respondent
   id
   text

Table: Response
   id
   respondent_id
   survey_id
   question_id
   answer_id

एक बार मैप आउट और सामान्य रूप से ठीक से (सामान्य रूपों पर पढ़ें ), SELECTs के साथ आप जो डेटा चाहते हैं उसे प्राप्त करना बहुत आसान है। सामान्यीकरण का आदर्श केवल जानकारी को दोहराना नहीं है या इसे असंगत स्थिति में आने देना है। इन रूपों में, बहुत सी चीज़ें करना बहुत आसान हो जाता है।

और, यदि आप ऐसी चीजों का अभ्यास करना चाहते हैं, तो Stackoverflow Data Explorer मैंने जो यहां प्रस्तुत किया है, उसके लिए सामान्यीकृत एक वास्तविक जीवन डेटा सेट है।

अब आप केवल answer_id . की संख्या गिनें सर्वेक्षण और प्रश्न के एक विशेष संयोजन के लिए दिखाई देता है। GROUP BY . का चालाकी से उपयोग आपके लिए सभी काम करता है। अब आपको उन दसियों अप्रयुक्त स्तंभों को देखते हुए पंक्तियों के माध्यम से पुनरावृति करने की आवश्यकता नहीं है जो यह पता लगाने की कोशिश कर रहे हैं कि उन्हें कैसे गिनना है। इतना ही नहीं, आप इन चीजों को views बना सकते हैं। , जिसका अर्थ है कि आप एक बार क्वेरी लिखते हैं और डेटाबेस दिखाता है कि इसके परिणाम एक तालिका हैं। फिर आप केवल दृश्य को क्वेरी कर सकते हैं (इसलिए सभी JOIN s और इसी तरह छिपे हुए हैं), जो बहुत आसान है। संग्रहित प्रक्रियाओं को भी अक्सर अनदेखा कर दिया जाता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एएसपी, माईएसक्यूएल और यूटीएफ -8

  2. माइस्क्ल TIME_WAIT; बहुत अधिक कनेक्शन समस्या

  3. मैं MySQL में सभी तालिकाओं को विशिष्ट कॉलम नामों के साथ कैसे ढूंढ सकता हूं?

  4. php . का उपयोग करके mysql डेटाबेस में चेकबॉक्स मान को कैसे सहेजना है

  5. mysql के लिए अधिकतम क्वेरी आकार क्या है?