10-7 5-2 查询至少生产两种不同的计算机(PC或便携式电脑)且机器速度至少为133的厂商
本题目要求编写SQL语句,
查询至少生产两种不同型号的计算机(PC或便携式电脑)且机器速度至少为133的厂商,输出结果按照制造商升序排列。
提示:
本题有三种情况:
(1) 至少生产两种不同PC的厂商
(2) 至少生产两种不同便携式电脑的厂商
(3) 至少生产一种PC且至少生产一种便携式电脑的厂商。
表结构:
CREATE TABLE product
( maker CHAR(20) , --制造商
model CHAR(20) NOT NULL, --产品型号
type CHAR(20), --产品类型
PRIMARY KEY(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)
);
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)
);
表样例
product表:
maker model type
D 2001 便携式电脑
D 2002 便携式电脑
E 2004 便携式电脑
D 3001 打印机
B 3002 打印机
A 1001 个人电脑
A 1002 个人电脑
A 1003 个人电脑
D 1008 个人电脑
pc表:
model speed ram hd cd price
1001 133.00 16 1.60 6X 1595
1002 120.00 16 1.60 6X 1399
1003 166.00 32 2.50 8X 1999
1008 180.00 32 2.00 8X 3699
laptop表:
model speed ram hd screen price
2001 100.00 20 1.10 9.50 1999
2002 133.00 12 0.75 11.30 2499
2004 133.00 16 1.10 11.20 3499
输出样例:
maker
A
D
select maker
from product inner join pc on product.model and pc.model inner join laptop on product.model and laptop.model as a
group by a.maker
having a.speed>=133 and count(a.maker)>=2;