Как создать процедуру, объединив две таблицы, у которых нет общего столбца в oracle sql? - PullRequest
0 голосов
/ 24 апреля 2020

Таблица 1: EMP

Столбцы: EMPNO, ENAME, SAL, JOB, DEPTNO

Таблица 2: SALGRADE

Столбцы: GRADE, HISAL, LOSAL

Учитывая EMPNO сотрудника в качестве входных данных для процедуры, мне нужно будет получить соответствующие Grade и SAL как вывод.

Ответы [ 2 ]

1 голос
/ 24 апреля 2020

Присоединяйтесь к sal между losal и hisal. Что-то вроде:

SELECT g.grade,
       e.sal
       FROM emp e
            LEFT JOIN salgrade g
                      ON g.losal <= e.sal
                         AND g.hisal >= e.sal
       WHERE e.empno = ?;
0 голосов
/ 24 апреля 2020

Или вы можете думать о дизайне БД, как показано ниже:

create table EMP
(
    EMPNO   NUMBER(5),
    ENAME   VARCHAR2(50),
    SAL     NUMBER(4),
    JOB     VARCHAR2(20),
    DEPTNO  NUMBER(2),
    GRADE   AS (CASE WHEN SAL >= 1000 AND SAL < 2000 THEN 'LOW'
                                 WHEN SAL >= 2000 AND SAL < 3000 THEN 'MEDIUM'
                                 WHEN SAL >= 3000 AND SAL < 4000 THEN 'HIGH'
                                 ELSE
                                    'UNKNOWN'
                            END),
    CONSTRAINT emp_pk PRIMARY KEY (EMPNO)
);

insert into emp (EMPNO,ENAME,SAL,JOB,DEPTNO) values (10001, 'Ram', 1000, 'King', 10 );
insert into emp (EMPNO,ENAME,SAL,JOB,DEPTNO) values (10002, 'Laxman', 2000, 'Minister', 20 );
insert into emp (EMPNO,ENAME,SAL,JOB,DEPTNO) values (10003, 'Sita', 3000, 'Queen', 30 );
insert into emp (EMPNO,ENAME,SAL,JOB,DEPTNO) values (10004, 'Ravan', 5000, 'Rakshas', 40 );

SELECT * FROM EMP;

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...