λ κ° μ΄μμ ν μ΄λΈμ κ²°ν© μν€λ κ²μ λ§ν©λλ€.
INNER JOINμ λ ν
μ΄λΈμ μΌμΉνλ κ°μ κΈ°μ€μΌλ‘ μ‘°μΈμ μννμ¬ κ²°κ³Όλ₯Ό λ°νν©λλ€. ν
μ΄λΈμ νΉμ μ΄μμ κ°μ΄ μΌμΉνλ κ²½μ°μλ§ ν΄λΉ νμ κ²°κ³Όμ ν¬ν¨μν΅λλ€.
CREATE TABLE table3(col_a INT);
CREATE TABLE table4(col_b INT);
INSERT INTO table3 VALUES (5),(6),(7);
INSERT INTO table4 VALUES (7),(6),(7),(8);
SELECT * FROM table3 JOIN table4 ON col_a = col_b;
| col_a | col_b |
|---|---|
| 7 | 7 |
| 6 | 6 |
| 7 | 7 |
LEFT OUTER JOINμ INNER JOIN + μΌμͺ½ ν
μ΄λΈμ λͺ¨λ λ μ½λλ₯Ό ν¬ν¨νμ¬ κ²°κ³Όλ₯Ό λ°νν©λλ€. λ§μ½ μ€λ₯Έμͺ½ ν
μ΄λΈμ ν΄λΉνλ λ μ½λκ° μλ κ²½μ°μλ μΌμͺ½ ν
μ΄λΈμ λ μ½λλ κ²°κ³Όμ ν¬ν¨λ©λλ€.
# table1μ μ»¬λΌ col_a, table2μ μ»¬λΌ col_b
INSERT INTO table1 VALUES (1),(2),(2),(3),(4);
INSERT INTO table2 VALUES (3),(4),(5),(5);
SELECT * FROM table1 LEFT JOIN table2 ON col_a = col_b;
| col_a | col_b |
|---|---|
| 3 | 3 |
| 4 | 4 |
| 1 | null |
| 2 | null |
| 2 | null |
λ¬Έμ : νλ²λ μ£Όλ¬Έμ μ²λ¦¬ν μ μλ μ§μ μ‘°ν
SELECT e.LastName, e.FirstName FROM Employees e LEFT JOIN Orders o ON o.EmployeeID = e.EmployeeID WHERE o.OrderID IS NULL;
RIGHT OUTER JOINμ INNER JOIN + μ€λ₯Έμͺ½ ν
μ΄λΈμ λͺ¨λ λ μ½λλ₯Ό ν¬ν¨νμ¬ κ²°κ³Όλ₯Ό λ°νν©λλ€. λ§μ½ μΌμͺ½ ν
μ΄λΈμ ν΄λΉνλ λ μ½λκ° μλ κ²½μ°μλ μ€λ₯Έμͺ½ ν
μ΄λΈμ λ μ½λλ κ²°κ³Όμ ν¬ν¨λ©λλ€.
SELECT * FROM table1 t1 RIGHT JOIN table2 t2 ON t1.col_a = t2.col_b;
| col_a | col_b |
|---|---|
| 3 | 3 |
| 4 | 4 |
| null | 5 |
| null | 5 |
FULL OUTER JOIN : LEFT OUTER JOINκ³Ό RIGHT OUTER JOINμ κ²°κ³Όλ₯Ό ν©μΉ κ²μ
λλ€. λ°λΌμ ν©μ§ν©μ λ§ν©λλ€. MariaDBμμλ FULL JOINμ μ§μνμ§ μμ UNIONμ μ¬μ©ν©λλ€.
UNION : μ€λ³΅λ νμ μ κ±°λ©λλ€.UNION ALL : λͺ¨λ νμ΄ λ°νλ©λλ€. (μ€λ³΅ μ κ±°X)UNION
INSERT INTO table11 VALUES (3),(4),(7);
INSERT INTO table10 VALUES (3),(4),(4),(5);
# LEFT JOIN
SELECT * FROM table10 LEFT JOIN table11
ON col1 = col_a
UNION
# RIGHT JOIN
SELECT * FROM table10 RIGHT JOIN table11 ON col1 = col_a;
| col1 | col_a |
|---|---|
| 3 | 3 |
| 4 | 4 |
| 5 | null |
| null | 7 |
UNION ALL
# LEFT JOIN
SELECT * FROM table10 LEFT JOIN table11
ON col1 = col_a
UNION ALL
# RIGHT JOIN
SELECT * FROM table10 RIGHT JOIN table11 ON col1 = col_a;
| col1 | col_a |
|---|---|
| 3 | 3 |
| 4 | 4 |
| 4 | 4 |
| 5 | null |
| 3 | 3 |
| 4 | 4 |
| 4 | 4 |
| null | 7 |
SELF JOIN : νλμ ν
μ΄λΈ λ΄μμ μκΈ° μμ μ μ‘°μΈνλ κ²μ λ§ν©λλ€.
SELECT e2.name
FROM employee e1 JOIN employee e2
ON e1.manager_id = e2.id
WHERE e1.name = 'μν₯λ―Ό';
JOINμ κ°―μκ° λμ΄λλ©΄ κ° JOINμ λν ONμ μμ±ν΄μΌ ν©λλ€.
SELECT o.OrderID, OrderDate, c.CustomerID, CustomerName, e.EmployeeID, e.LastName, FirstName
FROM Orders o
JOIN Customers c ON o.CustomerID = c.CustomerID
JOIN Employees e ON o.EmployeeID = e.EmployeeID
WHERE o.OrderDate BETWEEN '1996-07-01' AND '1996-07-31';
1996λ 7μ 1μΌλΆν° 1996λ 7μ 31μΌκΉμ§ μ£Όλ¬Έν κ³ κ° λ° μ§μ μ 보λ₯Ό κ°μ Έμ΅λλ€.
SELECT o.OrderID, OrderDate,
c.CustomerID, CustomerName,
e.EmployeeID, e.LastName, FirstName,
s.ShipperID, s.ShipperName
FROM Orders o
JOIN Customers c ON o.CustomerID = c.CustomerID
JOIN Employees e ON o.EmployeeID = e.EmployeeID
JOIN Shippers s ON o.ShipperID = s.ShipperID
WHERE o.OrderDate BETWEEN '1996-07-01' AND '1996-07-31'
ORDER BY OrderDate, c.CustomerID, e.EmployeeID, s.ShipperID;
1996λ 7μ 1μΌλΆν° 1996λ 7μ 31μΌκΉμ§ μ£Όλ¬Έν κ³ κ°, μ§μ, λ°°μ‘μ 체 μ 보λ₯Ό κ°μ Έμ€λλ° κ·Έ κΈ°μ€μΌλ‘ OrderDate, CustomerID, EmployeeID, ShipperID μμΌλ‘ κ°μ Έμ΅λλ€.