查询没有使用天津供应商供应的零部件的工程项目代码 S(SNO, SNAME, STATUS, CITY)P(PNO, PNAME, COLOR, WEIGHT )J(JNO, JNAME, CITY) SPJ(SNO, PNO, JNO, QTY )
时间: 2023-10-07 09:13:50 浏览: 203
这个问题需要进行多表联合查询,使用NOT IN语句可以筛选出没有使用天津供应商供应的零部件的工程项目代码。具体SQL语句如下:
SELECT DISTINCT J.JNO, J.JNAME
FROM J
INNER JOIN SPJ ON J.JNO = SPJ.JNO
INNER JOIN S ON SPJ.SNO = S.SNO
WHERE S.CITY <> '天津'
AND J.JNO NOT IN (
SELECT DISTINCT J.JNO
FROM J
INNER JOIN SPJ ON J.JNO = SPJ.JNO
INNER JOIN S ON SPJ.SNO = S.SNO
WHERE S.CITY = '天津'
)
解释:
首先,我们需要联合查询4个表格,建立起它们之间的关系。
然后,我们筛选出S表格中不是天津供应商的记录。这里使用了S表格的CITY字段进行筛选。
接下来,我们需要筛选出没有使用天津供应商供应的零部件的工程项目代码。这里使用NOT IN语句,将使用天津供应商的工程项目代码排除掉。
最后,我们使用SELECT DISTINCT语句,查询出不同的JNO和JNAME。
相关问题
S(SNO,SNAME,STATUS,CITY) 供应商表:供应商代码,供应商姓名,供应商状态,所在城市 P(PNO,PNAME,COLOR,WEIGHT) 零件表:零件代码,零件名称,颜色,重量 J(JNO,JNAME,CITY) 工程项目表:工程项目代码,工程项目名,工程项目所在城市 SPJ(SNO,PNO,JNO,QTY) 供应情况表:供应商代码,零件代码,工程项目代码,供应数量 请用关系代数表达查询:求供应工程项目J3零件的供应商代码。
可以用如下关系代数表达式来查询供应工程项目J3零件的供应商代码:
π SNO (σ JNAME='J3' ∧ PNAME='零件' (SPJ ⨝J(JNO)))
其中,σ表示选择符号,π表示投影符号,⨝表示自然连接符号,∧表示逻辑与符号。上述表达式中,SPJ ⨝J(JNO)表示将SPJ表与J表做自然连接,连接条件是它们的JNO相等,然后再根据JNAME='J3' ∧ PNAME='零件'做进一步选择,最后对结果投影出SNO即可得到供应工程项目J3零件的供应商代码。
供应商表S(SNO,SNAME,STATUS,CITY); 零件表P(PNO,PNAME,COLOR,WEIGHT); 工程项目表J(JNO,JNAME,CITY); 供应商情况表SPJ(SNO,PNO,JNO,QTY); 供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成: 零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成: 工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、所在城市(CITY)组成: 供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成: 1、写出建表语句; 2、完成下列需求描述的SQL: (1)求供应工程J1零件的供应商号码SNO: (2)求供应工程J1零件P1的供应商号码SNO: (3)求供应工程J1零件为红色的供应商号码SNO: (4)求没有使用天津供应商生产的红色零件的工程号JNO: (5)求至少用了供应商S1所供应的全部零件的工程号JNO。 (6)找出所有供应商的姓名和所在城市。 (7)找出所有零件的名称、颜色、重量。
1、建表语句:
CREATE TABLE S (SNO VARCHAR(20) PRIMARY KEY ,SNAME VARCHAR(20), STATUS VARCHAR(20), CITY VARCHAR(20));
CREATE TABLE P (PNO VARCHAR(20) PRIMARY KEY ,PNAME VARCHAR(20), COLOR VARCHAR(20), WEIGHT VARCHAR(20));
CREATE TABLE J (JNO VARCHAR(20) PRIMARY KEY ,JNAME VARCHAR(20), CITY VARCHAR(20));
CREATE TABLE SPJ (SNO VARCHAR(20), PNO VARCHAR(20), JNO VARCHAR(20), QTY VARCHAR(20));2、SQL语句:
(1)SELECT SNO FROM SPJ WHERE JNO='J1';
(2)SELECT SNO FROM SPJ WHERE JNO='J1' AND PNO='P1';
(3)SELECT SNO FROM SPJ WHERE JNO='J1' AND COLOR='RED';
(4)SELECT JNO FROM SPJ WHERE SNO<>'Tianjin' AND COLOR='RED';
(5)SELECT JNO FROM SPJ WHERE SNO='S1' AND QTY>=ALL(SELECT QTY FROM SPJ);
(6)SELECT SNAME,CITY FROM S;
(7)SELECT PNAME,COLOR,WEIGHT FROM P;
阅读全文