Oracle PL/SQL/Table Joins/Cross joins

Материал из SQL эксперт
Перейти к: навигация, поиск

Cross joins Demo

   <source lang="sql">

SQL> CREATE TABLE Employee(Employee_ID NUMBER(4) NOT NULL,

 2                   Employee_Name VARCHAR2(10),
 3                   JOB VARCHAR2(9),
 4                   Manager_ID NUMBER(4),
 5                   Start_Date DATE,
 6                   Salary NUMBER(7, 2),
 7                   COMM NUMBER(7, 2),
 8                   Deparment_ID NUMBER(2)
 9  );

Table created. SQL> SQL> INSERT INTO Employee VALUES (7369, "SMITH", "CLERK", 7902, TO_DATE("17-DEC-1980", "DD-MON-YYYY"), 800, NULL, 20); 1 row created. SQL> INSERT INTO Employee VALUES (7499, "ALLEN", "SALESMAN", 7698, TO_DATE("20-FEB-1981", "DD-MON-YYYY"), 1600, 300, 30); 1 row created. SQL> INSERT INTO Employee VALUES (7521, "WARD", "SALESMAN", 7698, TO_DATE("22-FEB-1981", "DD-MON-YYYY"), 1250, 500, 30); 1 row created. SQL> INSERT INTO Employee VALUES (7566, "JONES", "MANAGER", 7839, TO_DATE("2-APR-1981", "DD-MON-YYYY"), 2975, NULL, 20); 1 row created. SQL> INSERT INTO Employee VALUES (7654, "MARTIN", "SALESMAN", 7698, TO_DATE("28-SEP-1981", "DD-MON-YYYY"), 1250, 1400, 30); 1 row created. SQL> INSERT INTO Employee VALUES (7698, "BLAKE", "MANAGER", 7839, TO_DATE("1-MAY-1981", "DD-MON-YYYY"), 2850, NULL, 30); 1 row created. SQL> INSERT INTO Employee VALUES (7782, "CLARK", "MANAGER", 7839, TO_DATE("9-JUN-1981", "DD-MON-YYYY"), 2450, NULL, 10); 1 row created. SQL> INSERT INTO Employee VALUES (7788, "SCOTT", "ANALYST", 7566, TO_DATE("09-DEC-1982", "DD-MON-YYYY"), 3000, NULL, 20); 1 row created. SQL> INSERT INTO Employee VALUES (7839, "KING", "PRESIDENT", NULL, TO_DATE("17-NOV-1981", "DD-MON-YYYY"), 5000, NULL, 10); 1 row created. SQL> INSERT INTO Employee VALUES (7844, "TURNER", "SALESMAN", 7698, TO_DATE("8-SEP-1981", "DD-MON-YYYY"), 1500, 0, 30); 1 row created. SQL> INSERT INTO Employee VALUES (7876, "ADAMS", "CLERK", 7788, TO_DATE("12-JAN-1983", "DD-MON-YYYY"), 1100, NULL, 20); 1 row created. SQL> INSERT INTO Employee VALUES (7900, "JAMES", "CLERK", 7698, TO_DATE("3-DEC-1981", "DD-MON-YYYY"), 950, NULL, 30); 1 row created. SQL> INSERT INTO Employee VALUES (7902, "FORD", "ANALYST", 7566, TO_DATE("3-DEC-1981", "DD-MON-YYYY"), 3000, NULL, 20); 1 row created. SQL> INSERT INTO Employee VALUES (7934, "MILLER", "CLERK", 7782, TO_DATE("23-JAN-1982", "DD-MON-YYYY"), 1300, NULL, 10); 1 row created. SQL> SQL> CREATE TABLE Department(Department_ID NUMBER(2),

 2                          Department_Name VARCHAR2(14),
 3                          Location VARCHAR2(13)
 4  );

Table created. SQL> SQL> INSERT INTO Department VALUES (10, "ACCOUNTING", "NEW YORK"); 1 row created. SQL> INSERT INTO Department VALUES (20, "RESEARCH", "DALLAS"); 1 row created. SQL> INSERT INTO Department VALUES (30, "SALES", "CHICAGO"); 1 row created. SQL> INSERT INTO Department VALUES (40, "OPERATIONS", "BOSTON"); 1 row created. SQL> SQL> select * from Employee; EMPLOYEE_ID EMPLOYEE_N JOB MANAGER_ID START_DAT SALARY COMM DEPARMENT_ID


---------- --------- ---------- --------- ---------- ---------- ------------
      7369 SMITH      CLERK           7902 17-DEC-80        800                      20
      7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300           30
      7521 WARD       SALESMAN        7698 22-FEB-81       1250        500           30
      7566 JONES      MANAGER         7839 02-APR-81       2975                      20
      7654 MARTIN     SALESMAN        7698 28-SEP-81       1250       1400           30
      7698 BLAKE      MANAGER         7839 01-MAY-81       2850                      30
      7782 CLARK      MANAGER         7839 09-JUN-81       2450                      10
      7788 SCOTT      ANALYST         7566 09-DEC-82       3000                      20
      7839 KING       PRESIDENT            17-NOV-81       5000                      10
      7844 TURNER     SALESMAN        7698 08-SEP-81       1500          0           30
      7876 ADAMS      CLERK           7788 12-JAN-83       1100                      20

EMPLOYEE_ID EMPLOYEE_N JOB MANAGER_ID START_DAT SALARY COMM DEPARMENT_ID


---------- --------- ---------- --------- ---------- ---------- ------------
      7900 JAMES      CLERK           7698 03-DEC-81        950                      30
      7902 FORD       ANALYST         7566 03-DEC-81       3000                      20
      7934 MILLER     CLERK           7782 23-JAN-82       1300                      10

14 rows selected. SQL> select * from Department; DEPARTMENT_ID DEPARTMENT_NAM LOCATION


-------------- -------------
          10 ACCOUNTING     NEW YORK
          20 RESEARCH       DALLAS
          30 SALES          CHICAGO
          40 OPERATIONS     BOSTON

SQL> SQL> SQL> -- Cross-joins SQL> SQL> SELECT e.Employee_ID, d.Department_ID

 2  FROM Employee e, Department d;

EMPLOYEE_ID DEPARTMENT_ID


-------------
      7369            10
      7499            10
      7521            10
      7566            10
      7654            10
      7698            10
      7782            10
      7788            10
      7839            10
      7844            10
      7876            10

EMPLOYEE_ID DEPARTMENT_ID


-------------
      7900            10
      7902            10
      7934            10
      7369            20
      7499            20
      7521            20
      7566            20
      7654            20
      7698            20
      7782            20
      7788            20

EMPLOYEE_ID DEPARTMENT_ID


-------------
      7839            20
      7844            20
      7876            20
      7900            20
      7902            20
      7934            20
      7369            30
      7499            30
      7521            30
      7566            30
      7654            30

EMPLOYEE_ID DEPARTMENT_ID


-------------
      7698            30
      7782            30
      7788            30
      7839            30
      7844            30
      7876            30
      7900            30
      7902            30
      7934            30
      7369            40
      7499            40

EMPLOYEE_ID DEPARTMENT_ID


-------------
      7521            40
      7566            40
      7654            40
      7698            40
      7782            40
      7788            40
      7839            40
      7844            40
      7876            40
      7900            40
      7902            40

EMPLOYEE_ID DEPARTMENT_ID


-------------
      7934            40

56 rows selected. SQL> SQL> SQL> SQL> SQL> SQL> SQL> SQL> SQL> SQL> drop table Department cascade constraints; Table dropped. SQL> drop table Employee cascade constraints; Table dropped. SQL> SQL>

      </source>