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

本文通过创建多个表并插入数据,展示了如何使用SQL进行多表关联查询,特别是使用了外连接来获取所有可能的组合,并计算每个单位、厂家和规格型号对应的设备数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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/archive/2007/12/07/987411.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值