RIGHT [OUTER] JOIN – złączenie zewnętrzne prawostronne
Wynik obu komend RIGHT JOIN
i RIGHT OUTER 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 cały zbiór B.
Elementy wybrane employee.LastName | employee.DepartmentID | department.DepartmentID |
---|---|---|
Rafferty | 31 | 31 |
Jones, Heissenberg | 33 | 33 |
Robinson, Smith | 34 | 34 |
– | – | 35 |
Williams | null | – |
Klasa Java
package aderby.sqls.joins; import aderby.DerbyUtil; import java.sql.*; public class R120_RIGHT_OUTER_JOIN { private static final String baza = "C:/Przyklady/zatrudnieni_db"; static final String joinsql1 = "SELECT * FROM employee " + "RIGHT OUTER JOIN department ON " + "employee.DepartmentID = department.DepartmentID"; static final String joinsql2 = "SELECT * FROM employee " + "RIGHT JOIN department ON employee.DepartmentID = " + "department.DepartmentID"; 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
Rafferty, 31, 31, Sales Jones, 33, 33, Engineering Heisenberg, 33, 33, Engineering Robinson, 34, 34, Clerical Smith, 34, 34, Clerical null, null, 35, Marketing
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.