CROSS JOIN – złączenie krzyżowe
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 kartezjąński zbiorów A × B (połączenie każdego elementu A z każdym elementem B.
W opisanym przypadku tworzenie złączenia oczywiście nie ma sensu. Złączenie przeznaczone jest dla danych innego typu.
Klasa Java
package aderby.sqls.joins; import aderby.DerbyUtil; import java.sql.*; public class R124_CROSS_JOIN { private static final String baza = "C:/Przyklady/zatrudnieni_db"; static final String joinsql1 = "SELECT * FROM employee CROSS JOIN department"; static final String joinsql2 = "SELECT * FROM employee, department"; static final String joinsql3 = "SELECT * FROM employee INNER JOIN department ON 1=1"; 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(joinsql2); 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, 31, Sales Heisenberg, 33, 31, Sales Robinson, 34, 31, Sales Smith, 34, 31, Sales Williams, null, 31, Sales Rafferty, 31, 33, Engineering Jones, 33, 33, Engineering Heisenberg, 33, 33, Engineering Robinson, 34, 33, Engineering Smith, 34, 33, Engineering Williams, null, 33, Engineering Rafferty, 31, 34, Clerical Jones, 33, 34, Clerical Heisenberg, 33, 34, Clerical Robinson, 34, 34, Clerical Smith, 34, 34, Clerical Williams, null, 34, Clerical Rafferty, 31, 35, Marketing Jones, 33, 35, Marketing Heisenberg, 33, 35, Marketing Robinson, 34, 35, Marketing Smith, 34, 35, Marketing Williams, 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.