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

MySQL में JOIN का उपयोग करके पारस्परिक संबंध वाली पंक्तियों की गिनती

परिचय

जब एक टेबल में दो कॉलम होते हैं जो एक-दूसरे से संबंधित होते हैं (जैसे Value1 और Value2), और आप पारस्परिक संबंध (mutual relation) वाली पंक्तियों की गिनती करना चाहते हैं, तो सेल्फ-जॉइन (self-join) का उपयोग किया जा सकता है।

उदाहरण: टेबल बनाना और डेटा डालना

mysql> CREATE TABLE DemoTable1543 (
    -> Value1 INT,
    -> Value2 INT
    -> );
Query OK, 0 rows affected (1.36 sec)
mysql> INSERT INTO DemoTable1543 VALUES(57, 60);
Query OK, 1 row affected (0.52 sec)
mysql> INSERT INTO DemoTable1543 VALUES(60, 68);
Query OK, 1 row affected (0.38 sec)
mysql> INSERT INTO DemoTable1543 VALUES(90, 98);
Query OK, 1 row affected (0.36 sec)
mysql> INSERT INTO DemoTable1543 VALUES(98, 90);
Query OK, 1 row affected (0.20 sec)

सभी रिकॉर्ड देखना

mysql> SELECT * FROM DemoTable1543;

आउटपुट:

+--------+--------+
| Value1 | Value2 |
+--------+--------+
| 57     | 60     |
| 60     | 68     |
| 90     | 98     |
| 98     | 90     |
+--------+--------+
4 rows in set (0.00 sec)

पारस्परिक संबंध गिनने की क्वेरी

हम उन पंक्तियों को गिनेंगे जहां Value1=90 और Value2=90 का पारस्परिक संबंध है (यानी 90→98 और 98→90 दोनों मौजूद हैं):

mysql> SELECT COUNT(*) FROM DemoTable1543 tbl1
    -> JOIN DemoTable1543 tbl2
    -> ON tbl1.Value2 = tbl2.Value1
    -> WHERE tbl1.Value1 = 90 AND tbl2.Value2 = 90;

परिणाम

+----------+
| COUNT(*) |
+----------+
| 1        |
+----------+
1 row in set (0.00 sec)

व्याख्या

  • tbl1 और tbl2 एक ही टेबल के दो उपनाम (aliases) हैं
  • ON tbl1.Value2 = tbl2.Value1 - tbl1 का Value2, tbl2 के Value1 से मेल खाता है
  • WHERE tbl1.Value1 = 90 AND tbl2.Value2 = 90 - दोनों दिशाओं में 90 की उपस्थिति सुनिश्चित करता है
  • COUNT(*) - मेल खाने वाली पंक्तियों की गिनती करता है

उपयोग के मामले

  • सोशल नेटवर्क में पारस्परिक मित्रता (A follows B और B follows A)
  • द्विदिश संबंधों का विश्लेषण
  • ग्राफ डेटा में चक्र पहचान

सेल्फ-जॉइन MySQL में पारस्परिक संबंधों का विश्लेषण करने का एक शक्तिशाली तरीका है।

  1. - MySQL में एक ही क्वेरी से दो टेबल्स की पंक्तियों को कैसे काउंट करें

    सबक्वेरीज़ के साथ दो टेबल्स की रो काउंट एक साथ प्राप्त करना एक ही क्वेरी में दो अलग-अलग टेबल्स की पंक्ति संख्या गिनने के लिए सबक्वेरीज़ का उपयोग करें। पहली टेबल बनाएं: mysql> CREATE TABLE DemoTable1 ( Name VARCHAR(40) ); रिकॉर्ड्स इन्सर्ट करें: mysql> INSERT INTO DemoTable1 VALUES (Chris);

  1. - MySQL क्वेरी में COUNT के साथ CASE शर्त का उपयोग कैसे करें

    COUNT() के अंदर CASE WHEN का उपयोग करके सशर्त गिनती MySQL में इसके लिए CASE WHEN का उपयोग करें और COUNT() मेथड के अंदर CASE शर्त सेट करें। पहले टेबल बनाएं: create table DemoTable1374 ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Name varchar(20), Score int ); Query OK, 0 rows affected (0.61 sec) रि

  1. - Apache के साथ MySQL का उपयोग करना

    आइए समझते हैं कि Apache के साथ MySQL का उपयोग कैसे करें: Apache एक वेब सर्वर सॉफ़्टवेयर है जिसे Apache सॉफ़्टवेयर फाउंडेशन द्वारा विकसित और रखरखाव किया जाता है। यह एक सॉफ़्टवेयर है जो वेब पेज एक्सेस करने के लिए उपयोगकर्ता से अनुरोध लेता है। HTTP अनुरोध पर कुछ सुरक्षा जांच की जाती है और फिर उपयोगक