Aria

Apache Derby – tutorial

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 C05_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

Klasyfikacja złączeń, informacja o użytych tabelach, skrypt tworzący bazę danych oraz klasa sprawdzająca poprawność

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.