一:题目
本题目要求编写SQL语句, 查询销售便携式电脑但不销售PC的厂商。
提示:请使用SELECT语句作答。
表结构:
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)
);
二:分析:
查询销售便携式电脑但不销售PC的厂商
分析:1.将pc表和product表联合查询 可得到 生产pc的厂商 表1
2. 将laptop和product表联合查询 可得到生产便携式电脑的厂商 表2
3.将表1的查询结果作为表2的筛选条件
三:上码
-- 查询销售便携式电脑但不销售PC的厂商
-- 分析:1.将pc表和product表联合查询 可得到 生产pc的厂商 表1
-- 2. 将laptop和product表联合查询 可得到生产便携式电脑的厂商 表2
-- 3.将表1的查询结果作为表2的筛选条件
-- -- 1.
-- select maker
-- from pc,product
-- where pc.model = product.model;-- 2.select distinct makerfrom laptop,productwhere laptop.model = product.modeland product.maker not in (select makerfrom pc,productwhere pc.model = product.model);