Self Join என்றால் என்ன?
Self join என்பது ஒரு வழக்கமான join ஆகும், ஆனால் அட்டவணை தானாகவே இணைக்கப்படுகிறது.
Self Join தொடரியல்
SELECT column_name(s)
FROM table1 T1, table1 T2
WHERE condition;
குறிப்பு:
T1 மற்றும் T2 ஆகியவை ஒரே அட்டவணைக்கு வெவ்வேறு அட்டவணை aliases ஆகும்.
ஆர்ப்பாட்ட தரவுத்தளம்
இந்த பயிற்சியில் நாம் நன்கு அறியப்பட்ட Northwind மாதிரி தரவுத்தளத்தைப் பயன்படுத்துவோம்.
"Customers" அட்டவணையில் இருந்து ஒரு தேர்வு கீழே உள்ளது:
Customers அட்டவணை
+------------+--------------------------------+----------------+-------------------+----------+------------+---------+
| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
+------------+--------------------------------+----------------+-------------------+----------+------------+---------+
| 1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
| 2 | Ana Trujillo Emparedados... | Ana Trujillo | Avda. Constitución| México | 05021 | Mexico |
| 3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México | 05023 | Mexico |
| 4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
| 5 | Berglunds snabbköp | Christina Berg | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
+------------+--------------------------------+----------------+-------------------+----------+------------+---------+
SQL Self Join உதாரணம்
பின்வரும் SQL statement ஒரே நகரத்தில் இருந்து வாடிக்கையாளர்களை பொருத்துகிறது:
உதாரணம்
SELECT A.CustomerName AS CustomerName1, B.CustomerName AS CustomerName2, A.City
FROM Customers A, Customers B
WHERE A.CustomerID <> B.CustomerID
AND A.City = B.City
ORDER BY A.City;
முடிவு
விளக்கம்:
இந்த Self Join ஒரே நகரத்தில் (México D.F.) இருக்கும் வெவ்வேறு வாடிக்கையாளர்களைக் கண்டறிகிறது. WHERE A.CustomerID <> B.CustomerID என்பது அதே வாடிக்கையாளரை தானாகவே பொருத்துவதைத் தடுக்கிறது.
Self Join எவ்வாறு வேலை செய்கிறது
அட்டவணை நகல் உருவாக்கம்
அதே அட்டவணையின் இரண்டு நகல்கள் உருவாக்கப்படுகின்றன (A மற்றும் B)
இரண்டு வெவ்வேறு அட்டவணைகளாக கருதப்படுகிறது
SQL இரண்டு நகல்களை வெவ்வேறு அட்டவணைகளாக கருதுகிறது
Join நிபந்தனை பயன்படுத்தப்படுகிறது
விரும்பிய தரவைப் பெற ஒரு join நிபந்தனை பயன்படுத்தப்படுகிறது
முடிவுகள் திரும்பப் பெறப்படுகின்றன
அட்டவணையின் வெவ்வேறு வரிசைகளுக்கு இடையேயான உறவுகள் காட்டப்படுகின்றன
நடைமுறை உதாரணங்கள்
பொது நகர வாடிக்கையாளர்கள்
ஒரே நகரத்தில் இருக்கும் வாடிக்கையாளர்களைக் கண்டறிய
SELECT A.CustomerName, B.CustomerName, A.City
FROM Customers A, Customers B
WHERE A.CustomerID <> B.CustomerID
AND A.City = B.City;
பணியாளர் மேலாளர் உறவு
பணியாளர்கள் மற்றும் அவர்களின் மேலாளர்களைக் கண்டறிய
SELECT E1.Name AS Employee, E2.Name AS Manager
FROM Employees E1, Employees E2
WHERE E1.ManagerID = E2.EmployeeID;
தயாரிப்பு தொடர்புகள்
தொடர்புடைய தயாரிப்புகளைக் கண்டறிய
SELECT P1.ProductName, P2.ProductName
FROM Products P1, Products P2
WHERE P1.CategoryID = P2.CategoryID
AND P1.ProductID <> P2.ProductID;
பணியாளர்-மேலாளர் உதாரணம்
Self Join-ன் மிகவும் பொதுவான பயன்பாடு பணியாளர்-மேலாளர் உறவுகளைக் கண்டறிவதாகும்:
Employees அட்டவணை
+-------------+-----------+------------+-----------+
| EmployeeID | Name | ManagerID | Department|
+-------------+-----------+------------+-----------+
| 1 | John | NULL | CEO |
| 2 | Jane | 1 | IT |
| 3 | Bob | 1 | HR |
| 4 | Alice | 2 | IT |
| 5 | Charlie | 3 | HR |
+-------------+-----------+------------+-----------+
Self Join Query
SELECT E1.Name AS Employee, E2.Name AS Manager
FROM Employees E1, Employees E2
WHERE E1.ManagerID = E2.EmployeeID;
முடிவு
Self Join-ன் நன்மைகள்
தரவு உறவுகள்
அதே அட்டவணையில் உள்ள வெவ்வேறு வரிசைகளுக்கு இடையேயான உறவுகளைக் கண்டறிய உதவுகிறது
படிநிலை தரவு
படிநிலை அல்லது மரம் போன்ற தரவு கட்டமைப்புகளைக் கையாள்வதற்கு ஏற்றது
சிக்கலான பகுப்பாய்வு
தரவுக்குள் சிக்கலான உறவுகள் மற்றும் வடிவங்களை பகுப்பாய்வு செய்ய உதவுகிறது