π ΠΠ°ΠΊ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π±Π»ΠΈΡ Π² SQL: ΠΏΡΠΎΡΡΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ Π±Π΅Π· ΡΡΡΠ΄Π°
ΠΠ°ΠΊ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π±Π»ΠΈΡ Π² SQL?
Π§ΡΠΎΠ±Ρ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π±Π»ΠΈΡ Π² SQL, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ JOIN. ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· Π΄Π²ΡΡ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π±Π»ΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΎΠ±ΡΠ΅Π³ΠΎ ΡΡΠΎΠ»Π±ΡΠ°.
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° JOIN:
SELECT *
FROM table1
JOIN table2 ON table1.column = table2.column;
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ "table1" ΠΈ "table2" - ΡΡΠΎ ΠΈΠΌΠ΅Π½Π° ΡΠ°Π±Π»ΠΈΡ, Π° "column" - ΡΡΠΎ ΠΎΠ±ΡΠΈΠΉ ΡΡΠΎΠ»Π±Π΅Ρ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΡΠ°Π±Π»ΠΈΡΡ.
Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠΈΠΏΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² SQL:
- INNER JOIN: Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠ΅ΡΡ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ Π² ΠΎΠ±Π΅ΠΈΡ ΡΠ°Π±Π»ΠΈΡΠ°Ρ .
- LEFT JOIN: Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· Π»Π΅Π²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· ΠΏΡΠ°Π²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ.
- RIGHT JOIN: Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· ΠΏΡΠ°Π²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· Π»Π΅Π²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ.
- FULL JOIN: Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· ΠΎΠ±Π΅ΠΈΡ ΡΠ°Π±Π»ΠΈΡ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠΉ.
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π·Π½ΡΡ ΡΠΈΠΏΠΎΠ² ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ:
-- INNER JOIN
SELECT *
FROM table1
INNER JOIN table2 ON table1.column = table2.column;
-- LEFT JOIN
SELECT *
FROM table1
LEFT JOIN table2 ON table1.column = table2.column;
-- RIGHT JOIN
SELECT *
FROM table1
RIGHT JOIN table2 ON table1.column = table2.column;
-- FULL JOIN
SELECT *
FROM table1
FULL JOIN table2 ON table1.column = table2.column;
ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π±Π»ΠΈΡ Π² SQL!
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π±Π»ΠΈΡ Π² SQL
SQL (Structured Query Language) ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠΎΡΠ½ΡΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ Π² ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΡΡ Π±Π°Π·Π°Ρ Π΄Π°Π½Π½ΡΡ . ΠΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°Π±Π»ΠΈΡ Π² ΠΎΠ΄ΠΈΠ½ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
Π’ΠΈΠΏΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ ΡΠ°Π±Π»ΠΈΡ
Π SQL ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΏΠΎΠ² ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ ΡΠ°Π±Π»ΠΈΡ:
- INNER JOIN: Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ ΡΡΡΠΎΠΊΠΈ, Π³Π΄Π΅ Π΅ΡΡΡ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π² ΠΎΠ±ΠΎΠΈΡ ΡΠ°Π±Π»ΠΈΡΠ°Ρ
- LEFT JOIN: Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· Π»Π΅Π²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· ΠΏΡΠ°Π²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ
- RIGHT JOIN: Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· ΠΏΡΠ°Π²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· Π»Π΅Π²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ
- FULL OUTER JOIN: Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· ΠΎΠ±Π΅ΠΈΡ ΡΠ°Π±Π»ΠΈΡ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Π½Π°Π»ΠΈΡΠΈΡ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠΉ
ΠΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ΄Π°
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΊΠΎΠ΄Π°, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΈΠΏΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ ΡΠ°Π±Π»ΠΈΡ.
INNER JOIN
INNER JOIN ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· Π΄Π²ΡΡ ΡΠ°Π±Π»ΠΈΡ, Π³Π΄Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ»Π±ΡΠ° Π² ΠΎΠ±Π΅ΠΈΡ ΡΠ°Π±Π»ΠΈΡΠ°Ρ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ.
SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
ΠΡΠΎΡ Π·Π°ΠΏΡΠΎΡ Π²Π΅ΡΠ½Π΅Ρ Π²ΡΠ΅ OrderIDs ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ Orders, Π³Π΄Π΅ Π΅ΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ CustomerNames ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ Customers.
LEFT JOIN
LEFT JOIN Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· Π»Π΅Π²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· ΠΏΡΠ°Π²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ.
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
ΠΡΠΎΡ Π·Π°ΠΏΡΠΎΡ Π²Π΅ΡΠ½Π΅Ρ Π²ΡΠ΅ CustomerNames ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ Customers, Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ OrderIDs, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ.
RIGHT JOIN
RIGHT JOIN Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· ΠΏΡΠ°Π²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· Π»Π΅Π²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ.
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
RIGHT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
ΠΡΠΎΡ Π·Π°ΠΏΡΠΎΡ Π²Π΅ΡΠ½Π΅Ρ Π²ΡΠ΅ OrderIDs ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ Orders, Π²ΠΌΠ΅ΡΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ CustomerNames ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ Customers.
FULL OUTER JOIN
FULL OUTER JOIN Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· ΠΎΠ±Π΅ΠΈΡ ΡΠ°Π±Π»ΠΈΡ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Π½Π°Π»ΠΈΡΠΈΡ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠΉ.
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
FULL OUTER JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
ΠΡΠΎΡ Π·Π°ΠΏΡΠΎΡ Π²Π΅ΡΠ½Π΅Ρ Π²ΡΠ΅ CustomerNames ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ Customers, Π²ΠΌΠ΅ΡΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ OrderIDs ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ Orders, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Π½Π°Π»ΠΈΡΠΈΡ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠΉ.
ΠΡΠ²ΠΎΠ΄
Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡ Π² SQL - ΡΡΠΎ Π²Π°ΠΆΠ½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°Π±Π»ΠΈΡ. INNER JOIN, LEFT JOIN, RIGHT JOIN ΠΈ FULL OUTER JOIN ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π³ΠΈΠ±ΠΊΠΎΡΡΡ Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° Π½ΡΠΆΠ½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ· Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ .
ΠΠ½Π°Π½ΠΈΠ΅ ΡΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² SQL.