查询由生产厂商B生产的所有产品的型号(model) 和价格(price)

本题目要求编写SQL语句, 查询由生产厂商B生产的所有产品的型号(model) 和价格(price)。 提示:查询按照pc、laptop和printer的顺序进行。

表结构:

CREATE TABLE product
( maker CHAR(20) ,          --制造商
  model CHAR(20) NOT NULL,  --产品型号
  type CHAR(20),            --产品类型
  PRIMARY KEY(model)
);
CREATE TABLE laptop
( model CHAR(20) NOT NULL,    --型号
  speed  DECIMAL(6,2),        --速度 
  ram  INT,                   --内存
  hd DECIMAL(6,2),            --硬盘容量
  screen DECIMAL(6,2),        --屏幕大小
  price INT,                  --价钱
  PRIMARY KEY(model),
  FOREIGN KEY(model) REFERENCES product(model) 
);
CREATE TABLE printer
( model CHAR(20) NOT NULL,    --型号
  color BIT,                  --是否彩色
  type CHAR(10),              --类型
  price INT,                  --价钱
  PRIMARY KEY(model),
  FOREIGN KEY(model) REFERENCES product(model)
);
CREATE TABLE pc
( model CHAR(20) NOT NULL,    --型号
  speed  DECIMAL(6,2),        --速度
  ram  INT,                   --内存
  hd DECIMAL(6,2),            --硬盘容量
  cd CHAR(4),                 --光驱
  price INT,                  --价钱
  PRIMARY KEY(model),
  FOREIGN KEY(model) REFERENCES product(model)
);

表样例:
product表:

makermodeltype
A1001个人电脑
D2003便携式电脑
D3001打印机
D2001便携式电脑
B1006个人电脑
B3002打印机

pc表:

modelspeedramhdcdprice
1001133.00161.606X1595
1006200.00323.18X2099

laptop表:

modelspeedramhdscreenprice
2001100.00201.109.501999
2003117.00321.0011.203599

printer表;

modelcolortypeprice
30011喷墨275
30021喷墨269

输出样例:

modelprice
10062099
3002269
分析:

题目说查询所有由B生产的产品型号和价格,我想到的就是让条件为 maker=‘B’;题目还规定了产品类型的查询顺序,并且查询的投影都是型号和价格,因此可以使用union

思路一:

先将不同类型的产品的所有数据投影到型号和价格,使用union并起来,再筛选条件 maker=‘B’

思路二:

按照pc、laptop、printer的顺序,分别筛选出maker=‘B’的产品,再将三个结果用union并起来

我的代码(思路一):
select model,price
from(select model,price from pc
     union
     select model,price from laptop
     union
     select model,price from printer
     ) a
where model in (select model from product where maker='B')
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@这个编程我不会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值