利用笛卡尔乘积和外连接解决保留行数据问题

create table company(id number(4),company varchar2(20)); --新建一张单位表

create table factory(id number(4),factory varchar2(20));--新建一张生产厂家

create table spec(id number(4),spec varchar2(20));--新建一张规格型号表

SQL> create table equip(id number(4),equip varchar(20),companyid number(4),factoryid number(4),specd
id number(4)); --新建一张设备表

insert into company values(1,'单位1');

insert into company values(2,'单位2');

insert into company values(3,'单位3');

insert into factory values(1,'厂家1');

insert into factory values(2,'厂家2');

insert into factory values(3,'厂家3');

insert into factory values(4,'厂家4');

insert into spec values(1,'规格型号1');

insert into spec values(2,'规格型号2');

insert into spec values(3,'规格型号3');

insert into spec values(4,'规格型号4');

insert into equip(id,equip,companyid,factoryid,specdid) values(1,'设备名称_1',1,2,3);

查询语句如下:
SQL> select a.company "单位名称",
  2         a.factory "厂家编号",
  3         a.spec "规格型号",
  4         count(b.id) "设备数量"
  5    from (select c.id c_id,
  6                 c.company,
  7                 f.id f_id,
  8                 f.factory,
  9                 s.id s_id,
10                 s.spec
11            from company c, factory f, spec s) a, equip b
12   where a.c_id = b.companyid(+)
13     and a.f_id = b.factoryid(+)
14     and a.s_id = b.specdid(+)
15     group by a.company, a.factory, a.spec;

单位名称             厂家编号             规格型号               设备数量
-------------------- -------------------- -------------------- ----------
单位1                厂家1                规格型号1                     0
单位1                厂家1                规格型号2                     0
单位1                厂家1                规格型号3                     0
单位1                厂家1                规格型号4                     0
单位1                厂家2                规格型号1                     0
单位1                厂家2                规格型号2                     0
单位1                厂家2                规格型号3                     1
单位1                厂家2                规格型号4                     0
单位1                厂家3                规格型号1                     0
单位1                厂家3                规格型号2                     0
单位1                厂家3                规格型号3                     0
单位1                厂家3                规格型号4                     0
单位1                厂家4                规格型号1                     0
单位1                厂家4                规格型号2                     0
单位1                厂家4                规格型号3                     0
单位1                厂家4                规格型号4                     0
单位2                厂家1                规格型号1                     0
单位2                厂家1                规格型号2                     0
单位2                厂家1                规格型号3                     0
单位2                厂家1                规格型号4                     0

单位名称             厂家编号             规格型号               设备数量
-------------------- -------------------- -------------------- ----------
单位2                厂家2                规格型号1                     0
单位2                厂家2                规格型号2                     0
单位2                厂家2                规格型号3                     0
单位2                厂家2                规格型号4                     0
单位2                厂家3                规格型号1                     0
单位2                厂家3                规格型号2                     0
单位2                厂家3                规格型号3                     0
单位2                厂家3                规格型号4                     0
单位2                厂家4                规格型号1                     0
单位2                厂家4                规格型号2                     0
单位2                厂家4                规格型号3                     0
单位2                厂家4                规格型号4                     0
单位3                厂家1                规格型号1                     0
单位3                厂家1                规格型号2                     0
单位3                厂家1                规格型号3                     0
单位3                厂家1                规格型号4                     0
单位3                厂家2                规格型号1                     0
单位3                厂家2                规格型号2                     0
单位3                厂家2                规格型号3                     0
单位3                厂家2                规格型号4                     0
单位3                厂家3                规格型号1                     0

单位名称             厂家编号             规格型号               设备数量
-------------------- -------------------- -------------------- ----------
单位3                厂家3                规格型号2                     0
单位3                厂家3                规格型号3                     0
单位3                厂家3                规格型号4                     0
单位3                厂家4                规格型号1                     0
单位3                厂家4                规格型号2                     0
单位3                厂家4                规格型号3                     0
单位3                厂家4                规格型号4                     0

48 rows selected
原文地址:https://www.cnblogs.com/Godblessyou/p/987411.html