πŸ”— Как ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ нСсколько Ρ‚Π°Π±Π»ΠΈΡ† Π² 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.

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ соСдинСниС 2-Ρ… ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ‚Π°Π±Π»ΠΈΡ† (INNER JOIN)

JOIN Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ† | ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° ΠΏΠΎ SQL

SQL Π½Π° ΠΊΠΎΡ‚ΠΈΠΊΠ°Ρ…: Π”ΠΆΠΎΠΈΠ½Ρ‹ (Joins)

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

Π“Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ SQL?

Π“Π΄Π΅ Π½Π΅ Ρ€Π°Π²Π½ΠΎ Π² SQL: поиск Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ

πŸ”— Как ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ нСсколько Ρ‚Π°Π±Π»ΠΈΡ† Π² SQL: простоС руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… Π±Π΅Π· Ρ‚Ρ€ΡƒΠ΄Π°

Как ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ SQL: Π»Π΅Π³ΠΊΠΈΠΉ способ обновлСния Π΄Π°Π½Π½Ρ‹Ρ…

Π“Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ HAVING Π² SQL?