Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में डेटा-चालित टेबल संबंधों को JOINS और CASE स्टेटमेंट से कैसे प्रबंधित करें

कभी-कभी डेटाबेस डिज़ाइन में एक मुख्य टेबल होती है जो विभिन्न उप-टेबल्स को संदर्भित करती है, जहां प्रत्येक उप-टेबल एक विशिष्ट इकाई से संबंधित डेटा रखती है। MySQL में ऐसे डेटा-चालित संबंधों को CASE स्टेटमेंट और मल्टीपल LEFT JOIN के साथ क्वेरी किया जा सकता है।

उदाहरण: छात्रों के रिमार्क्स अलग-अलग टेबल्स में

मुख्य टेबल Student_Detail:

mysql> SELECT * FROM student_detail;
+----+---------+
| Id | Name    |
+----+---------+
| 1  | Harshit |
| 2  | Rahul   |
| 3  | Aarav   |
+----+---------+

प्रत्येक छात्र के लिए अलग रिमार्क्स टेबल:

mysql> SELECT * FROM Student_Harshit;
+----+-----------+
| Id | Remarks   |
+----+-----------+
| 1  | Excellent |
+----+-----------+

mysql> SELECT * FROM Student_Rahul;
+----+---------+
| Id | Remarks |
+----+---------+
| 2  | Average |
+----+---------+

mysql> SELECT * FROM Student_Aarav;
+----+-------------+
| Id | Remarks     |
+----+-------------+
| 3  | Intelligent |
+----+-------------+

क्वेरी: CASE के साथ LEFT JOIN

mysql> SELECT 
    sd.id, 
    sd.name,
    CASE sd.name
        WHEN 'Harshit' THEN h1.Remarks
        WHEN 'Rahul'   THEN r1.Remarks
        WHEN 'Aarav'   THEN a1.Remarks
        ELSE 'Error'
    END AS REMARKS
FROM Student_Detail sd
LEFT JOIN Student_Harshit h1 ON sd.id = h1.id
LEFT JOIN Student_Rahul   r1 ON sd.id = r1.id
LEFT JOIN Student_Aarav   a1 ON sd.id = a1.id;

परिणाम:

+----+---------+-------------+
| id | name    | REMARKS     |
+----+---------+-------------+
| 1  | Harshit | Excellent   |
| 2  | Rahul   | Average     |
| 3  | Aarav   | Intelligent |
+----+---------+-------------+

व्याख्या

  • मुख्य टेबल से प्रत्येक पंक्ति के लिए, CASE नाम के आधार पर तय करता है कि किस जॉइन की गई टेबल से रिमार्क्स लेना है।
  • सभी संभावित टेबल्स को LEFT JOIN किया जाता है ताकि कोई पंक्ति छूटे नहीं।
  • यह पैटर्न तब उपयोगी है जब स्कीमा बदलना संभव न हो और डेटा विभिन्न टेबल्स में बंटा हो।

बेहतर विकल्प

यदि संभव हो, तो एक ही Student_Remarks टेबल में student_id और remarks कॉलम रखना बेहतर डिज़ाइन है। फिर साधारण JOIN पर्याप्त होगा।

  1. - MySQL में टेबल के सभी कॉलम कैसे हटाएं?

    DROP TABLE का उपयोग करके पूरी टेबल हटाना MySQL में किसी टेबल के सभी कॉलम हटाने का सबसे सरल तरीका पूरी टेबल को ही ड्रॉप करना है। सिंटैक्स DROP TABLE yourTableName; उदाहरण 1. टेबल बनाना CREATE TABLE DemoTable ( StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentFirstName VARCHAR(20)

  1. - MySQL का उपयोग करके प्रति पेज प्रति दिन विज़िटर कैसे गिनें?

    नोट: हम मानते हैं कि हमने DBNAME नामक एक डेटाबेस और tableName नामक एक टेबल बनाई है। आइए समझते हैं कि MySQL का उपयोग करके प्रति दिन प्रति पेज विज़िटर की संख्या कैसे क्वेरी की जा सकती है। यह बिट ग्रुप फंक्शन का उपयोग करके किया जा सकता है: क्वेरी SELECT DATE(date) Date, page_id, COUNT(*) colName FRO

  1. - Python में MySQL का उपयोग करके टेबल कॉपी करना

    हम Python का उपयोग करके MySQL में किसी मौजूदा टेबल की कॉपी बना सकते हैं। टेबल के कॉलम, कॉलम परिभाषाएं और सभी पंक्तियों सहित पूरी टेबल कॉपी की जाएगी। सिंटैक्स CREATE TABLE table_name SELECT * FROM existing_table table_name बनाई जाने वाली नई टेबल का नाम है। existing_table कॉपी की जाने वाली टेबल का न