NATURAL [INNER] JOIN – złączenie wewnętrzne naturalne
Wynik obu komend NATURAL INNER JOIN
i NATURAL JOIN
jest jednakowy.
Teoria zbiorów
Oznaczmy zbiór z lewej jako A, a zbiór z prawej jako B.
W sensie teorii zbiorów jest to iloczyn (wspólna cześć zbiorów) A∩B.
Elementy wybrane employee.LastName | employee.DepartmentID | department.DepartmentID |
---|---|---|
Rafferty | 31 | 31 |
Jones, Heissenberg | 33 | 33 |
Robinson, Smith | 34 | 34 |
Williams | null | – |
– | – | 35 |
Klasa Java
package aderby.sqls.joins; import aderby.DerbyUtil; import java.sql.*; public class R123_NATURAL_INNER_JOIN { private static final String baza = "C:/Przyklady/zatrudnieni_db"; static final String joinsql1 = "SELECT * FROM employee NATURAL INNER JOIN department"; static final String joinsql2 = "SELECT * FROM employee NATURAL JOIN department"; public static void main(String[] args) { DerbyUtil.startDerbyEngine(DerbyUtil.embdriver); Connection con = DerbyUtil.connectEmbeddedDB(baza, ";create=false"); Statement stat = null; ResultSet rs = null; ResultSetMetaData rsmd; try { stat = con.createStatement(); rs = stat.executeQuery(joinsql1); rsmd = rs.getMetaData(); int cols = rsmd.getColumnCount(); while(rs.next()) { for(int i = 1; i <cols + 1; i++) { if(i<cols) { System.out.print(rs.getString(i) + ", "); } else{ System.out.print(rs.getString(i)); } } System.out.println(); } } catch (SQLException e) { e.printStackTrace(); } DerbyUtil.close(rs); DerbyUtil.close(stat); DerbyUtil.close(con); DerbyUtil.shutdownEmbeddedDB(baza); DerbyUtil.shutdownDerbyEngine(); } }
Po uruchomieniu klasy na konsoli zobaczymy
31, Rafferty, Sales 33, Jones, Engineering 33, Heisenberg, Engineering 34, Robinson, Clerical 34, Smith, Clerical
Więcej na temat złączenia można znaleźć w dokumentacji Apache Derby.
Pliki do ściągnięcia
Aktualny (tworzony narastająco) plik module-info.java
Aktualny (tworzony narastająco) plik DerbyUtil.java
Pliki tworzone narastająco zastępują poprzednie pliki o tej samej nazwie i działają dla wszystkich wcześniej opublikowanych przykładów we wszystkich wpisach w projekcie. W przypadku pliku module-info.java
może być potrzebne skreślenie niepotrzebnych wpisów.