Oracle PL/SQL/Table Joins/Cross joins

Материал из SQL эксперт
Версия от 09:54, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Cross joins Demo

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>