问答题 对于工程数据库的四个基本表
厂家S(Sno,Sname,Status,City)
产品P(Pno,Pname,Weight,Color)
工程J(Jno,Jname,City)
供货SPJ(Sno, Pno,Jno,QTY)
试用SQL的查询语句表达下列查询
①查找出货量(QTY)在300~500的所有供货情况
②查询使用了由供应红色产品的厂商供应的产品的工程名
③查询至少使用了厂家S1所提供的全部零件的工程名

【正确答案】① SELECT *
FROM SPJ
WHERE QTY BETWEEN 300 AND 500
② SELECT Jname
FROM J
WHERE Jno IN(SELECT Jno
FROM SPJ
WHERE Sno IN(SELECT Sno
FROM SPJ
WHERE Pno IN(SELECT Pno
FROM P
WHERE Color='红')))
③ SELECT Jname FROM J
WHERE NOT EXISTS(SELECT *
FROM SPJ SPJX
WHERE Sno='S1' AND NOT EXISTS
(SELECT *
FROM SPJ SPJY
WHERE SPJX.Pno=SPJY.Pno
AND SPJY.Jno=J.Jno));
【答案解析】