Oracle 组合来自不同表的列值

Oracle 组合来自不同表的列值,oracle,union-all,Oracle,Union All,我卡住了。我有两个表-看图片1,我想建立查询,这将给我的结果-它显示在图片2 我有两个查询,我想把它们混在一起,从第2张图片中获得列表。请帮助我,如何构建查询 查询一:从部门id在90到110之间的部门中选择部门名称、部门id 查询2:从部门id在90到110之间的员工中选择姓氏、部门id 我的样本表的输出 +-------+----+------------+ | KING | 10 | ACCOUNTING | | BLAKE | 30 | SALES | | CLARK |

我卡住了。我有两个表-看图片1,我想建立查询,这将给我的结果-它显示在图片2

我有两个查询,我想把它们混在一起,从第2张图片中获得列表。请帮助我,如何构建查询

  • 查询一:从部门id在90到110之间的部门中选择部门名称、部门id
  • 查询2:从部门id在90到110之间的员工中选择姓氏、部门id
我的样本表的输出

+-------+----+------------+
| KING  | 10 | ACCOUNTING |
| BLAKE | 30 | SALES      |
| CLARK | 10 | ACCOUNTING |
| JONES | 20 | RESEARCH   |
| SCOTT | 20 | RESEARCH   |
+-------+----+------------+

查询

with departments (department_id, department_name) as (
        select  90, 'Executive'  from dual union all
        select 100, 'Finance'    from dual union all
        select 110, 'Accounting' from dual
     ),
     employees (employee_id, last_name, department_id) as (
        select 1003, 'King'     ,  90 from dual union all
        select 1005, 'De Hann'  ,  90 from dual union all
        select 1009, 'Gietz'    , 110 from dual union all
        select 1013, 'Popp'     , 100 from dual union all
        select 1014, 'Chen'     , 100 from dual union all
        select 1015, 'Higgins'  , 110 from dual union all
        select 1029, 'Greenberg', 100 from dual union all
        select 1040, 'Kochar'   ,  90 from dual union all
        select 1043, 'Faviet'   , 100 from dual union all
        select 1045, 'Urman'    , 100 from dual union all
        select 1049, 'Sciarra'  , 100 from dual
     )
     --   end input data;   begin actual query   --
select c_name, department_id from 
  ( select department_name as c_name, department_id, 0 as categ from departments
    union all
    select '    ' || last_name as c_name, department_id, 1 from employees
    order by department_id, categ, c_name
  );
结果:

C_NAME        DEPARTMENT_ID
------------- -------------
Executive                90
    De Hann              90
    King                 90
    Kochar               90
Finance                 100
    Chen                100
    Faviet              100
    Greenberg           100
    Popp                100
    Sciarra             100
    Urman               100
Accounting              110
    Gietz               110
    Higgins             110
你不需要“与…”部分;只需在两个分解子查询(在“输入数据”之后)之后使用SELECT语句开始的查询。我甚至在每个部门为您按姓氏订购;如果不需要,只需从ORDERBY子句中删除“c_name”


我称第一列为c_name;你可以随意称呼它,但当它也包含员工的姓氏时,叫它部门的名字对我来说没有多大意义。若要随意命名,请将SELECT语句从
选择c_名称,部门id
更改为
选择c_名称作为任意名称,部门id…

谢谢,是否有其他方式的可行任务列表?部门名称------部门ID------部门ID------部门Uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。我将很快发布解决方案。回答得很好。我从未使用过UNION,可能是因为我不知道它的用法。谢谢你更好的回答。谢谢你的帮助。这个答案就是我问的。
C_NAME        DEPARTMENT_ID
------------- -------------
Executive                90
    De Hann              90
    King                 90
    Kochar               90
Finance                 100
    Chen                100
    Faviet              100
    Greenberg           100
    Popp                100
    Sciarra             100
    Urman               100
Accounting              110
    Gietz               110
    Higgins             110