ãåå¿è åããSQLã«ãããINNER JOINïŒå éšçµåïŒãåããããã解説
SQLã«ãããINNER JOINïŒå éšçµåïŒã«ã€ããŠè§£èª¬ããŸããINNER JOINã¯è€æ°ã®ããŒãã«ãçµåããéã«äœ¿çšãããéèŠãªæäœã§ãããã®èšäºãéããŠINNER JOINã®åºæ¬çãªæ§æãã䜿ãã©ãããªã©ãããµã³ãã«ã³ãŒããåèã«ããªãã詳ããåŠãã§ãããŸããããINNER JOINïŒå éšçµåïŒãšã¯äœã
INNER JOINã¯2ã€ä»¥äžã®ããŒãã«ããããŒã¿ãçµåããSQLæ§æã®äžã€ã§ãã
ãã®çµåæ¹æ³ã¯å ±éã®ããŒãæã€è¡ã®ã¿ãæœåºããããããçµåããŠæ°ããçµæã»ãããäœæããŸããçµæãšããŠåŸãããããŒãã«ã«ã¯çµåæ¡ä»¶ãæºããè¡ã ããå«ãŸãããããããŒã¿ãäžèŽããªãè¡ã¯é€å€ãããŸãã
以äžã«äŸãæããŸãã
1ã€ç®ã®ããŒãã«ããEmployeesïŒåŸæ¥å¡ïŒãããŒãã«ã§ã以äžã®ãããªæ§é ã«ãªã£ãŠãããšããŸãã
| EmployeeID | Name |
|
1 | Tanaka |
| 2 | Suzuki |
| 3 | Yamada |
| 4 | Watanabe |
2ã€ç®ã®ããŒãã«ããDepartmentsïŒéšéïŒãããŒãã«ã§ã以äžã®ãããªæ§é ã«ãªã£ãŠãããšããŸãã
| DepartmentID | Department | EmployeeID |
| 1 | Sales | 1 |
| 2 | Marketing | 2 |
| 3 | HR | 3 |
ããã§ãINNER JOINã䜿ã£ãŠãååŸæ¥å¡ãã©ã®éšéã«æå±ããŠãããã調ã¹ãããšããŸãããã®å Žåãæ¬¡ã®ãããªSQLã¯ãšãªãå®è¡ããŸãã
SELECT Employees.Name, Departments.Department
FROM Employees
INNER JOIN Departments
ON Employees.EmployeeID = Departments.EmployeeID;
çµæã¯ä»¥äžã®ããã«ãªããŸãã
| Name | Department |
| Tanaka | Sales |
| Suzuki | Marketing |
| Yamada | HR |
ãã®ããã«ãINNER JOINã¯2ã€ã®ããŒãã«éã§äžèŽããã¬ã³ãŒããçµåããŠãçµæãåŸãããšãã§ããŸãã
ãã®äŸã§ã¯ãEmployeeIDãäžèŽããã¬ã³ãŒããçµåããŠããŸããããã§ååŸæ¥å¡ãã©ã®éšéã«æå±ããŠããããåãããŸããã
泚ç®ããã¹ããªã®ã¯ãWatanabeããã®æ å ±ãçµæã«å«ãŸããŠããªãããšã§ããããã¯ãWatanabeããã®EmployeeIDãDepartmentsããŒãã«ã«ååšããªããããINNER JOINã®çµæããé€å€ãããããã§ãã
ãããINNER JOINã®ç¹æ§ã§ãäžèŽããæ å ±ããªãè¡ã¯çµæã«å«ãŸããŸããã
INNER JOINïŒå éšçµåïŒã®åºæ¬çãªæ§æ
INNER JOINã®åºæ¬çãªæ§æã¯ä»¥äžã®éãã§ãã
SELECT åå
FROM ããŒãã«1
INNER JOIN ããŒãã«2
ON ããŒãã«1.ããŒãšãªãåå = ããŒãã«2.ããŒãšãªãåå;
ãã®æ§æã¯ä»¥äžã®èŠçŽ ããæãç«ã£ãŠããŸãã
SELECT åå: çµåããçµæããååŸããåãæå®ããŸããè€æ°ã®åãæå®ããããšãã§ããŸãã
FROM ããŒãã«1: çµåå
ãšãªãæåã®ããŒãã«ãæå®ããŸãã
INNER JOIN ããŒãã«2: çµåãã2çªç®ã®ããŒãã«ãæå®ããŸãã
ON ããŒãã«1.ããŒãšãªãåå = ããŒãã«2.ããŒãšãªãåå: çµåæ¡ä»¶ãæå®ããŸãããã®éšåã«ãã£ãŠã©ã®åãåºæºã«è¡ãçµåãããããæ±ºãŸããŸãã
INNER JOINã䜿çšããéã«ã¯ãçµåæ¡ä»¶ãéèŠã§ããããŒãšãªãååãæå®ããŠ2ã€ã®ããŒãã«ã®é¢é£æ§ã確ç«ããçµæãšããŠåŸãããããŒã¿ãå¶åŸ¡ããŸãã
ããã¯äŸãã°é¡§å®¢IDãååIDãªã©ã«ãªãå Žåãå€ãã§ãã
INNER JOINã®äœ¿ãæ¹
ããã§ã¯å®éã®ããŒãã«ãããŒã¿ã亀ããŠINNER JOINã®ãµã³ãã«ã³ãŒãã瀺ããŸããããå ·äœçãªINNER JOINã®äœ¿ãæ¹ãã€ã¡ãŒãžããŠã¿ãŠãã ããã
ãã®äŸã§ã¯é¡§å®¢æ å ±ãæ ŒçŽããCustomersããŒãã«ãšæ³šææ å ±ãæ ŒçŽããOrdersããŒãã«ã䜿çšããŸãã
ããŒãã«ã®ããŒã¿
Customers ããŒãã«:
| CustomerID | CustomerName | City    |
|------------|--------------|------------|
| 1     | Alice    | New York  |
| 2     | Bob     | Los Angeles|
| 3     | Carol    | Chicago  |
Orders ããŒãã«:
| OrderID | CustomerID | OrderDate |
|---------|------------|-----------|
| 101Â Â Â | 1Â Â Â Â Â | 2023-07-15|
| 102Â Â Â | 2Â Â Â Â Â | 2023-07-16|
| 103Â Â Â | 1Â Â Â Â Â | 2023-07-17|
INNER JOIN ãµã³ãã«ã³ãŒããšè§£èª¬
SELECT Customers.CustomerName, Orders.OrderDate
FROM Customers
INNER JOIN Orders
ON Customers.CustomerID = Orders.CustomerID;
ãã®ãµã³ãã«ã³ãŒãã§ã¯CustomersããŒãã«ãšOrdersããŒãã«ãCustomerIDåãåºæºã«INNER JOINããŠããŸããçµæãšããŠã顧客ããšã®ååãšæ³šææ¥ãé¢é£ä»ããããããŒã¿ãååŸãããŸãã
SELECT Customers.CustomerName, Orders.OrderDate: çµæã«è¡šç€ºããåãæå®ããŠããŸããããã§ã¯ã顧客ã®ååãšæ³šææ¥ã衚瀺ãããŸãã
FROM Customers INNER JOIN Orders: INNER JOINã䜿çšããŠCustomersããŒãã«ãšOrdersããŒãã«ãçµåããŠããŸãã
ON Customers.CustomerID = Orders.CustomerID: çµåæ¡ä»¶ãæå®ããŠããŸããããã§ã¯ãCustomersããŒãã«ãšOrdersããŒãã«ãCustomerIDåãåºæºã«çµåããŠããŸãã
ãã®ã¯ãšãªã®çµæã¯ä»¥äžã®ããã«ãªããŸã:
| CustomerName | OrderDate |
|--------------|------------|
| Alice    | 2023-07-15 |
| Bob     | 2023-07-16 |
| Alice    | 2023-07-17 |
ãã®çµæã¯é¡§å®¢ã®ååãšæ³šææ¥ãé¢é£ä»ããããŠããŸããINNER JOINã䜿çšããããšã§ã顧客ããšã®æ³šæå±¥æŽãäžã€ã®è¡šã«ãŸãšããããšãã§ããŸããã
泚æããŒã¿ã®ç¡ãCustomerIDã3ã®é¡§å®¢ã¯æœåºãããŠããŸããã
ïŒã€ä»¥äžã®ããŒãã«ã§INNER JOINïŒå éšçµåïŒã䜿çšããå Žå
3ã€ä»¥äžã®ããŒãã«ãINNER JOINããå Žåã¯ãJOINå¥ãå¢ãããŠããããšã§å¯Ÿå¿ã§ããŸãã以äžã®ããã«æžããŸãã
SELECT åå
FROM ããŒãã«1
INNER JOIN ããŒãã«2
ON ããŒãã«1.ããŒãšãªãåå = ããŒãã«2.ããŒãšãªãåå
INNER JOIN ããŒãã«3
ON ããŒãã«2.ããŒãšãªãåå = ããŒãã«3.ããŒãšãªãåå;
INNER JOINã䜿ãã¡ãªãã
INNER JOINã䜿çšããããšã§ç°ãªãããŒãã«ã«åæ£ããŠããããŒã¿ãé¢é£ä»ããäžã€ã®çµæã»ãããšããŠååŸã§ããŸãã
ããã«ããå¿ èŠãªæ å ±ãäžåºŠã®ã¯ãšãªã§ç°¡æœã«ååŸã§ãããšããã¡ãªããããããŸãã
INNER JOINã䜿ãå Žé¢
INNER JOINãå©çšãããå Žé¢ã¯ä»¥äžã®ãããªäŸããããŸããéèšãè€æ°ç®æã«åæ£ããŠããããŒã¿ããŸãšããéã«ãšãŠã䟿å©ã§ãã
é¢é£ããããŒã¿ã®çµå: äŸãã°ã顧客æ å ±ãæ ŒçŽããããŒãã«ãšæ³šææ å ±ãæ ŒçŽããããŒãã«ãããå Žåããããã®ããŒãã«ãINNER JOINããŠã顧客ããšã®æ³šæå±¥æŽãååŸããããšãã§ããŸãã
ã«ããŽãªãã¿ã°ã®é¢é£ä»ã: ååæ å ±ãæ ŒçŽããããŒãã«ãšã«ããŽãªæ å ±ãæ ŒçŽããããŒãã«ãINNER JOINããŠãç¹å®ã®ã«ããŽãªã«å±ããååãååŸããéã«æŽ»çšã§ããŸãã
INNER JOINã䜿ããªãã»ããè¯ãå Žé¢
INNER JOINã¯ããŒã¿ã®é¢é£ä»ããå¿ èŠãªå Žé¢ã§æçšã§ãããå¿ ããããã¹ãŠã®ã¯ãšãªã§äœ¿ãã¹ãã§ã¯ãããŸãããç¹ã«çµåããããŒãã«ã®ãµã€ãºã倧ãããªããšãã¯ãšãªã®ããã©ãŒãã³ã¹ãäœäžããå¯èœæ§ããããããé©åãªã€ã³ããã¯ã¹ã®äœ¿çšãã¯ãšãªã®æé©åãå¿ èŠã§ãããŸããæ°å€ãã®ããŒãã«ãçµåããå Žåã«ãããã©ãŒãã³ã¹äœäžã«æ³šæããå¿ èŠããããŸãã
INNER JOINã䜿çšããçµæãã·ã¹ãã ã®å®è¡é床ãé ããªã£ãŠããŸãå Žåã«ã¯ããŒãã«ã®æ§é ãããŒã¿éã確èªããŠã¿ãŸãããã
å éšçµåãšå€éšçµåã®éã
SQLã«ã¯å€éšçµåãšããæ§æãååšããŸããINNER JOINãšã¯å¯Ÿç §çã«ãå€éšçµåã¯äžèŽããªãè¡ãå«ããŠçµåããæ¹æ³ã§ããå€éšçµåã«ã¯å·Šå€éšçµåãå³å€éšçµåãå®å šå€éšçµåã®3çš®é¡ããããŸããINNER JOINã¯äžèŽããè¡ã®ã¿ãååŸããã®ã«å¯Ÿããå€éšçµåã¯äžèŽããªãè¡ãååŸã§ãããããããŒã¿ã®è£å®ãæ¬ æå€ã®ç¢ºèªã«æçšã§ããããããã®ç¹åŸŽãçè§£ããŠã䜿ãå Žé¢ãåãåããŸãããã
å€éšçµåã«ã€ããŠã¯ããåå¿è åããSQLã«ãããOUTER JOINïŒå€éšçµåïŒãåããããã解説 ã§è©³ãã解説ããŠããŸãã
ãŸãšã
INNER JOINïŒå éšçµåïŒã¯ç°ãªãããŒãã«ããé¢é£ããããŒã¿ãçµåããéã«åœ¹ç«ã€SQLã®æ§æã§ããå ±éã®ããŒãæã€è¡ã ããçµåããæ°ããçµæã»ãããçæããŸããé©åãªå Žé¢ã§äœ¿çšããããšã§ãããŒã¿ã®é¢é£ä»ãã广çãã€ç°¡æœã«è¡ããäžæ¹ã§ãããã©ãŒãã³ã¹äœäžã®ãªã¹ã¯ãããããã¯ãšãªã®æé©åãããŒã¿ã®ç¶æ ã«ãæ°ãé ãå¿ èŠããããŸããå€éšçµåãšã®éããçè§£ããŠãé©åãªçµåæäœãéžæããŸãããã













