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

MySQL और PHP का उपयोग करके डेटाबेस में टैग कैसे स्टोर करें?

आपको अपने डेटा को दो तालिकाओं के बीच विभाजित करना चाहिए, questions और tags और उन्हें questions_tags . का उपयोग करके संबंधित करें तालिका में शामिल हों।

CREATE TABLE questions (
  id INT UNSIGNED NOT NULL AUTO_INCREMENT,
  url TEXT NOT NULL,
  PRIMARY KEY (id)
);

CREATE TABLE tags (
  id INT UNSIGNED NOT NULL AUTO_INCREMENT,
  tag VARCHAR(255) NOT NULL,
  PRIMARY KEY (id)
);

CREATE TABLE questions_tags (
  question_id INT UNSIGNED NOT NULL REFERENCES questions,
  tag_id INT UNSIGNED NOT NULL REFERENCES tags
);

मुझे यकीन नहीं है कि count . क्या है आपकी मूल तालिका में कॉलम है इसलिए मैंने इसे छोड़ दिया।

उपरोक्त तालिकाओं का उपयोग करके आप एक निश्चित टैग या किसी प्रश्न के सभी टैग वाले सभी प्रश्नों को खोजने के लिए जॉइन का उपयोग कर सकते हैं।

संपादित करें

प्रत्येक टैग की गिनती पाने के लिए आप कुछ इस तरह कर सकते हैं:

  SELECT tag,
         count(*) AS c
    FROM tags
GROUP BY tag;

संपादित करें

सभी प्रश्नों के लिए सभी टैग की संख्या प्राप्त करने के लिए यह करें:

  SELECT t.tag,
         q.question_id,
         count(*) AS c
    FROM tags AS t,
         questions_tags AS qt
         questions AS q
   WHERE t.id = qt.tag_id
     AND qt.question_id = q.id         
GROUP BY t.id, q.id;

यदि आप केवल विशिष्ट टैग या प्रश्नों के लिए गिनती चाहते हैं तो अतिरिक्त WHERE जोड़ें खंड।

नोट :उपरोक्त सभी SQL का परीक्षण नहीं किया गया है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. अंतिम MySQL विरासत डेटाबेस दुःस्वप्न

  2. django में नया डेटाबेस कनेक्शन कैसे बनाएं

  3. PHP और SQL हैशिंग सहायता:मैं क्या गलत कर रहा हूँ?

  4. लोकलहोस्ट में सत्र ठीक से काम करता है लेकिन सीपीएएनईएल में नहीं

  5. Microsoft Access का उपयोग MySQL डेटाबेस के फ़्रंट-एंड के रूप में करना?